Como han mencionado otras respuestas, pprintes un gran módulo que hará lo que quieras. Sin embargo, si no desea importarlo y solo desea imprimir la salida de depuración durante el desarrollo, puede aproximar su salida.
Algunas de las otras respuestas funcionan bien para cadenas, pero si las prueba con un objeto de clase, obtendrá el error TypeError: sequence item 0: expected string, instance found.
Para objetos más complejos, asegúrese de que la clase tenga un __repr__método que imprima la información de propiedad que desea:
class Foo(object):
def __init__(self, bar):
self.bar = bar
def __repr__(self):
return "Foo - (%r)" % self.bar
Y luego, cuando desee imprimir la salida, simplemente asigne su lista a la strfunción de esta manera:
l = [Foo(10), Foo(20), Foo("A string"), Foo(2.4)]
print "[%s]" % ",\n ".join(map(str,l))
salidas:
[Foo - (10),
Foo - (20),
Foo - ('A string'),
Foo - (2.4)]
También puede hacer cosas como anular el __repr__método de listpara obtener una forma de impresión bonita anidada:
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
da
[first,
2,
[another,
list,
here],
last]
Desafortunadamente, no hay sangría de segundo nivel, pero para una depuración rápida puede ser útil.