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?
Odpowiedzi:
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.
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'
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
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.