Como outras respostas mencionaram, pprinté um ótimo módulo que fará o que você quiser. No entanto, se você não deseja importá-lo e deseja apenas imprimir a saída de depuração durante o desenvolvimento, você pode aproximar sua saída.
Algumas das outras respostas funcionam bem para strings, mas se você tentar com um objeto de classe, receberá o erro TypeError: sequence item 0: expected string, instance found.
Para objetos mais complexos, certifique-se de que a classe tenha um __repr__método que imprima as informações de propriedade que você deseja:
class Foo(object):
def __init__(self, bar):
self.bar = bar
def __repr__(self):
return "Foo - (%r)" % self.bar
E então, quando você quiser imprimir a saída, simplesmente mapeie sua lista para a strfunção como esta:
l = [Foo(10), Foo(20), Foo("A string"), Foo(2.4)]
print "[%s]" % ",\n ".join(map(str,l))
saídas:
[Foo - (10),
Foo - (20),
Foo - ('A string'),
Foo - (2.4)]
Você também pode fazer coisas como substituir o __repr__método de listpara obter uma forma de impressão bonita aninhada:
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
dá
[first,
2,
[another,
list,
here],
last]
Infelizmente, nenhum recuo de segundo nível, mas para uma depuração rápida, pode ser útil.