Python - Mit Newline verbinden


86

Wenn ich in der Python-Konsole Folgendes eingebe:

>>> "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])

Gibt:

'I\nwould\nexpect\nmultiple\nlines'

Obwohl ich erwarten würde, eine solche Ausgabe zu sehen:

I
would
expect
multiple
lines

Was fehlt mir hier?

Antworten:


87

Die Konsole druckt die Darstellung, nicht die Zeichenfolge selbst.

Wenn Sie ein Präfix verwenden print, erhalten Sie das, was Sie erwarten.

In dieser Frage finden Sie Details zum Unterschied zwischen einer Zeichenfolge und der Darstellung der Zeichenfolge. Die Darstellung ist sehr vereinfacht und Sie geben den Quellcode ein, um diese Zeichenfolge zu erhalten.


40

Du hast printdas Ergebnis vergessen . Was Sie erhalten, ist das PIn RE(P)Lund nicht das tatsächliche Druckergebnis.

In Py2.x solltest du so etwas wie

>>> print "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
I
would
expect
multiple
lines

und in Py3.X ist Drucken eine Funktion, also sollten Sie dies tun

print("\n".join(['I', 'would', 'expect', 'multiple', 'lines']))

Das war die kurze Antwort. Ihr Python-Interpreter, bei dem es sich tatsächlich um eine REPL handelt, zeigt immer die Darstellung der Zeichenfolge und nicht die tatsächlich angezeigte Ausgabe an. Repräsentation ist das, was Sie mit der reprAussage bekommen würden

>>> print repr("\n".join(['I', 'would', 'expect', 'multiple', 'lines']))
'I\nwould\nexpect\nmultiple\nlines'

13

Sie müssen printdiese Ausgabe erhalten.
Du solltest tun

>>> x = "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
>>> x                   # this is the value, returned by the join() function
'I\nwould\nexpect\nmultiple\nlines'
>>> print x    # this prints your string (the type of output you want)
I
would
expect
multiple
lines

4

Sie müssen es ausdrucken:

In [22]: "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
Out[22]: 'I\nwould\nexpect\nmultiple\nlines'

In [23]: print "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
I
would
expect
multiple
lines

4

Wenn Sie es damit drucken, erhalten print 'I\nwould\nexpect\nmultiple\nlines'Sie:

I
would
expect
multiple
lines

Dies \nist ein neues Zeilenzeichen, das speziell zum Markieren von END-OF-TEXT verwendet wird. Es kennzeichnet das Ende der Zeile oder des Textes. Diese Eigenschaft wird von vielen Sprachen wie C, C ++ usw. geteilt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.