Comme d'autres réponses l'ont mentionné, pprintc'est un excellent module qui fera ce que vous voulez. Cependant, si vous ne voulez pas l'importer et que vous voulez simplement imprimer la sortie de débogage pendant le développement, vous pouvez approximer sa sortie.
Certaines des autres réponses fonctionnent bien pour les chaînes, mais si vous les essayez avec un objet de classe, cela vous donnera l'erreur TypeError: sequence item 0: expected string, instance found.
Pour les objets plus complexes, assurez-vous que la classe dispose d'une __repr__méthode qui imprime les informations de propriété souhaitées:
class Foo(object):
def __init__(self, bar):
self.bar = bar
def __repr__(self):
return "Foo - (%r)" % self.bar
Et puis, lorsque vous souhaitez imprimer la sortie, mappez simplement votre liste à la strfonction comme ceci:
l = [Foo(10), Foo(20), Foo("A string"), Foo(2.4)]
print "[%s]" % ",\n ".join(map(str,l))
les sorties:
[Foo - (10),
Foo - (20),
Foo - ('A string'),
Foo - (2.4)]
Vous pouvez également faire des choses comme remplacer la __repr__méthode de listpour obtenir une forme d'impression jolie imbriquée:
class my_list(list):
def __repr__(self):
return "[%s]" % ",\n ".join(map(str, self))
a = my_list(["first", 2, my_list(["another", "list", "here"]), "last"])
print a
donne
[first,
2,
[another,
list,
here],
last]
Malheureusement pas d'indentation de deuxième niveau mais pour un débogage rapide cela peut être utile.