String presentation with textwrap
I haven’t written that many programs that run solely from the command line with a lot of user instructions incorporated into the program flow, so I haven’t done much Python display text processing. But if I had,
textwrap would very likely be one of my best friends.
textwrap module is designed to wrap text, produce some formatted paragraphs, or totally strip out indentation from strings. It’s there for your convenience. Let’s take a look at what it can do:
import textwrap my_string = "The textwrap module is designed to wrap text, produce some formatted paragraphs, or totally strip out indentation from strings. It's there for your convenience. Let's take a look at what it can do:" print my_string print textwrap.wrap(my_string, 60)
Whoa whoa whoa there, that’s some weirdness. I’ve clearly got a cut-up string there, but it’s in list format. Let’s clean that up a bit:
print "\n".join(textwrap.wrap(my_string, 60))
But wait a second, that seems like writing a bunch of characters that I didn’t want to write. Let’s use
fill() pretty much does the exact same thing as
wrap(), but it automatically joins everything and adds some newlines in.
Now let’s fiddle around with
my_string = "\t\t" + my_string print my_string print textwrap.dedent(my_string)
I’ve added in some tabs here just to showcase what
dedent() is designed to do. You can add whitespace to the beginning of your strings - such as if you wanted to include paragraphs in the source code - but then strip it out for presentation in your app.
And that’s a