17 Mad Libs:Using regular expressions

 

When I was a wee lad, we used to play at Mad Libs for hours and hours. This was before computers, mind you, before televisions or radio or even paper! No, scratch that, we had paper. Anyway, point is we only had Mad Libs to play, and we loved it! And now you must play!


In this chapter, we’ll write a program called mad.py that will read a file given as a positional argument and find all the placeholders in angle brackets, like <verb> or <adjective>. For each placeholder, we’ll prompt the user for the part of speech being requested, like “Give me a verb” and “Give me an adjective.” (Notice that you’ll need to use the correct article, just as in chapter 2.) Each value from the user will then replace the placeholder in the text, so if the user says “drive” for the verb, then <verb> in the text will be replaced with drive. When all the placeholders have been replaced with inputs from the user, we’ll print out the new text.

There is a 17_mad_libs/inputs directory with some sample files you can use, but I also encourage you to create your own. For instance, here is a version of the “fox” text:

$ cd 17_mad_libs
$ cat inputs/fox.txt
The quick <adjective> <noun> jumps <preposition> the lazy <noun>.

When the program is run with this file as the input, it will ask for each of the placeholders and then print the silliness:

17.1 Writing mad.py

17.1.1 Using regular expressions to find the pointy bits

17.1.2 Halting and printing errors

17.1.3 Getting the values

17.1.4 Substituting the text

17.2 Solution

17.3 Discussion

17.3.1 Substituting with regular expressions

17.3.2 Finding the placeholders without regular expressions

17.4 Going further

Summary