Python - Dołącz za pomocą nowej linii

89

W konsoli Pythona podczas wpisywania:

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

Daje:

'I\nwould\nexpect\nmultiple\nlines'

Chociaż spodziewałbym się takiego wyjścia:

I
would
expect
multiple
lines

Czego tu brakuje?

TTT
źródło

Odpowiedzi:

88

Konsola drukuje reprezentację, a nie sam łańcuch.

Jeśli dodasz prefiks print, otrzymasz to, czego oczekujesz.

Zobacz to pytanie, aby uzyskać szczegółowe informacje na temat różnicy między ciągiem a jego reprezentacją. Uproszczone, reprezentacja jest tym, co wpisujesz w kodzie źródłowym, aby uzyskać ten ciąg.

rozwijać
źródło
41

Zapomniałeś o printwyniku. Co można dostać to Pw RE(P)La nie rzeczywisty wynik wydrukowany.

W Py2.x powinieneś coś w stylu

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

aw Py3.X print jest funkcją, więc powinieneś to zrobić

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

To była krótka odpowiedź. Twój interpreter Pythona, który w rzeczywistości jest REPL, zawsze wyświetla reprezentację ciągu zamiast faktycznego wyświetlanego wyniku. Reprezentacja jest tym, co otrzymasz wraz z reproświadczeniem

>>> print repr("\n".join(['I', 'would', 'expect', 'multiple', 'lines']))
'I\nwould\nexpect\nmultiple\nlines'
Abhijit
źródło
13

Musisz printuzyskać to wyjście.
Powinieneś zrobić

>>> 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
źródło
4

Musisz to wydrukować:

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
korzeń
źródło
4

Gdy wydrukujesz to w ten print 'I\nwould\nexpect\nmultiple\nlines'sposób, otrzymasz:

I
would
expect
multiple
lines

Jest \nto znak nowego wiersza specjalnie używany do oznaczania KONIEC TEKSTU. Oznacza koniec linii lub tekstu. Ta cecha jest wspólna dla wielu języków, takich jak C, C ++ itp.

Sibi
źródło