Como han mencionado otras respuestas, pprint
es un gran módulo que va a hacer lo que quiera. Sin embargo, si no desea importarlo y solo desea imprimir resultados de depuración durante el desarrollo, puede aproximar su resultado.
Algunas de las otras respuestas funcionan bien para las cadenas, pero si las prueba con un objeto de clase le dará el error TypeError: sequence item 0: expected string, instance found
.
Para los objetos más complejos, asegúrese de que la clase tiene un método __repr__
que imprime 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 se desea imprimir la salida, sólo tiene que trazar su lista para la función str
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 reemplazar el método de list
__repr__
para obtener una forma de anidado impresión bastante:
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 sin sangría de segundo nivel, pero para una depuración rápida que puede ser útil.
Cómo ot bastante imprimir en un archivo? – Mawg
¿Por qué no usar simplemente 'import pprint'? – clankill3r
@ clankill3r, entonces necesitas usar 'pprint.pprint (the_list)', generalmente es solo una cuestión de preferencia personal. Elegí tener el desorden extra en la línea de importación en este caso. –