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?

TTT
quelle

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.

entspannen
quelle
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'
Abhijit
quelle
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
pradyunsg
quelle
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
Wurzel
quelle
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.

Sibi
quelle