Antworten:
from pprint import pprint
pprint(the_list)
import pprint?
pprint.pprint(the_list)normalerweise verwenden, es ist nur eine Frage der persönlichen Präferenz. In diesem Fall habe ich mich für die zusätzliche Unordnung in der Importzeile entschieden.
stream=, der Standardwert ist stdout. docs.python.org/3/library/pprint.html
Ein schneller Hack beim Debuggen, der ohne Import funktioniert, pprintwäre, sich der Liste anzuschließen '\n'.
>>> lst = ['foo', 'bar', 'spam', 'egg']
>>> print '\n'.join(lst)
foo
bar
spam
egg
None.
print '\n'.join(map(str, lst))
Einfach durch "Entpacken" der Liste im Argument der Druckfunktion und Verwenden eines Zeilenumbruchs (\ n) als Trennzeichen.
print (* lst, sep = '\ n')
lst = ['foo', 'bar', 'spam', 'egg']
print(*lst, sep='\n')
foo
bar
spam
egg
from __future__ import print_function Vielen Dank für den Kommentar.
Du meinst so etwas wie ...:
>>> print L
['this', 'is', 'a', ['and', 'a', 'sublist', 'too'], 'list', 'including', 'many', 'words', 'in', 'it']
>>> import pprint
>>> pprint.pprint(L)
['this',
'is',
'a',
['and', 'a', 'sublist', 'too'],
'list',
'including',
'many',
'words',
'in',
'it']
>>>
...? Aus Ihrer kursorische Beschreibung Standardbibliotheksmodul pprint ist das erste , was in den Sinn kommt; Wenn Sie jedoch Beispiel-Ein- und Ausgänge beschreiben können (damit Sie nicht PHP lernen müssen, um Ihnen zu helfen ;-), können wir möglicherweise spezifischere Hilfe anbieten!
import json
some_list = ['one', 'two', 'three', 'four']
print(json.dumps(some_list, indent=4))
Ausgabe:
[
"one",
"two",
"three",
"four"
]
https://docs.python.org/3/library/pprint.html
Wenn Sie den Text benötigen (zum Beispiel zur Verwendung mit Flüchen):
import pprint
myObject = []
myText = pprint.pformat(myObject)
Dann wird myTextVariable etwas ähnliches php var_dumpoder print_r. Weitere Optionen und Argumente finden Sie in der Dokumentation.
Wie die anderen Antworten vermuten lassen, macht das pprint- Modul den Trick.
Dennoch bei dem Debuggen , wo Sie benötigen könnten die gesamte Liste in eine Protokolldatei zu setzen, könnte man pFormat Methode zu verwenden , zusammen mit Modul hat Protokollierung zusammen mit pprint.
import logging
from pprint import pformat
logger = logging.getLogger('newlogger')
handler = logging.FileHandler('newlogger.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.WARNING)
data = [ (i, { '1':'one',
'2':'two',
'3':'three',
'4':'four',
'5':'five',
'6':'six',
'7':'seven',
'8':'eight',
})
for i in xrange(3)
]
logger.error(pformat(data))
Und wenn Sie es direkt in einer Datei protokollieren müssen, müssen Sie einen Ausgabestream mit dem Schlüsselwort stream angeben. Ref
from pprint import pprint
with open('output.txt', 'wt') as out:
pprint(myTree, stream=out)
Für Python 3 mache ich dasselbe wie die Antwort von shxfee :
def print_list(my_list):
print('\n'.join(my_list))
a = ['foo', 'bar', 'baz']
print_list(a)
welche Ausgänge
foo
bar
baz
Nebenbei benutze ich eine ähnliche Hilfsfunktion, um schnell Spalten in einem Pandas DataFrame zu sehen
def print_cols(df):
print('\n'.join(df.columns))
Wie andere Antworten bereits erwähnt haben, pprintist es ein großartiges Modul, das macht, was Sie wollen. Wenn Sie es jedoch nicht importieren und nur die Debugging-Ausgabe während der Entwicklung drucken möchten, können Sie die Ausgabe approximieren.
Einige der anderen Antworten funktionieren gut für Zeichenfolgen, aber wenn Sie sie mit einem Klassenobjekt versuchen, erhalten Sie den Fehler TypeError: sequence item 0: expected string, instance found.
Stellen Sie bei komplexeren Objekten sicher, dass die Klasse über eine __repr__Methode verfügt, mit der die gewünschten Eigenschaftsinformationen gedruckt werden:
class Foo(object):
def __init__(self, bar):
self.bar = bar
def __repr__(self):
return "Foo - (%r)" % self.bar
Wenn Sie dann die Ausgabe drucken möchten, ordnen Sie Ihre Liste einfach der folgenden strFunktion zu:
l = [Foo(10), Foo(20), Foo("A string"), Foo(2.4)]
print "[%s]" % ",\n ".join(map(str,l))
Ausgänge:
[Foo - (10),
Foo - (20),
Foo - ('A string'),
Foo - (2.4)]
Sie können auch die __repr__Methode überschreiben list, um eine Form des verschachtelten hübschen Druckens zu erhalten:
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
gibt
[first,
2,
[another,
list,
here],
last]
Leider kein Einzug der zweiten Ebene, aber für ein schnelles Debuggen kann es nützlich sein.
Sie können auch Ihre Liste durchlaufen:
def fun():
for i in x:
print(i)
x = ["1",1,"a",8]
fun()