
Understanding the pprint() Function in Python
You may know the pprint module and its pprint() function to pretty print a string, dictionary, set, or list.
If not, feel free to watch the following video and read the associated tutorial on the Finxter blog:
π Recommended Tutorial: Python pprint β A Simple Guide to Pretty Printing
Here’s an example where we don’t use pretty-printing on a dictionary—looks ugly, doesn’t it?
my_dict = {'alice': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'bob': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'carl': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'dave': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
print(my_dict)The output crams it all into a single line with forced line breaks:

You can pretty print it by importing the pprint module and call pprint():
import pprint
my_dict = {'alice': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'bob': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'carl': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'dave': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
pprint.pprint(my_dict)Much prettier output with one dictionary row per line:

But what if you want to take this output as a string instead of printing it to the shell? In other words: π
How to Pretty Print to a String Not Printing to Output Shell?
To pretty-print to a string instead of the standard output (std), use the pprint.pformat() function instead of pprint.pprint(). For example, to pretty-print a dictionary d to a string, use the expression pprint.pformat(d) and assign it to a string variable for further processing.
Here’s an example that makes this crystal clear:
import pprint
my_dict = {'alice': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'bob': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'carl': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'dave': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
my_string = pprint.pformat(my_dict)
print(type(my_string))
# <class 'str'>
print(my_string)
The output shows that the dictionary is now pretty-printed to a string variable instead of to the shell:

You can now do follow-up processing of the pretty-printed data structure such as storing it in a file, sending it over the web (programmatically), or analyzing it in your script.
π‘ Note: You can pretty-print dictionaries, lists, sets, and tuples to strings the exact same way by using the pprint.pformat(x) function instead of pprint.pprint(x) for data structure x.