pythonpretty-printpprint

How do I get Python's pprint to return a string instead of printing?


In other words, what's the sprintf equivalent for pprint?


Solution

  • The pprint module has a function named pformat, for just that purpose.

    From the documentation:

    Return the formatted representation of object as a string. indent, width and depth will be passed to the PrettyPrinter constructor as formatting parameters.

    Example:

    >>> import pprint
    >>> people = [
    ...     {"first": "Brian", "last": "Kernighan"}, 
    ...     {"first": "Dennis", "last": "Richie"},
    ... ]
    >>> pprint.pformat(people, indent=4)
    "[   {   'first': 'Brian', 'last': 'Kernighan'},\n    {   'first': 'Dennis', 'last': 'Richie'}]"