Comment puis-je obtenir le pprint de python pour retourner une chaîne au lieu d’imprimer?

En d’autres termes, quel est le sprintf équivalent à pprint?

Le module pprint a une commande nommée pformat , pour ce seul but.

De la documentation:

Renvoie la représentation mise en forme de l’object en tant que chaîne. indent, width et depth seront transmis au constructeur PrettyPrinter en tant que parameters de mise en forme.

Exemple:

>>> 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'}]" 

En supposant que vous voulez vraiment dire pprint partir de la bibliothèque pretty-print , alors vous voulez la méthode pprint.pformat .

Si vous voulez juste dire print , alors vous voulez str()

 >>> import pprint >>> pprint.pformat({'key1':'val1', 'key2':[1,2]}) "{'key1': 'val1', 'key2': [1, 2]}" >>> 

Vous cherchez pprint.pformat ?

Quelque chose comme ça:

 import pprint, SsortingngIO s = SsortingngIO.SsortingngIO() pprint.pprint(some_object, s) print s.getvalue() # displays the ssortingng