Python - Bergabung dengan baris baru

92

Di konsol Python, ketika saya mengetik:

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

Memberikan:

'I\nwould\nexpect\nmultiple\nlines'

Meskipun saya berharap untuk melihat hasil seperti itu:

I
would
expect
multiple
lines

Apa yang kulewatkan di sini?

TTT
sumber

Jawaban:

90

Konsol sedang mencetak representasi, bukan string itu sendiri.

Jika Anda mengawali dengan print, Anda akan mendapatkan apa yang Anda harapkan.

Lihat pertanyaan ini untuk mengetahui detail tentang perbedaan antara string dan representasi string. Sangat disederhanakan, representasi adalah apa yang Anda ketikkan dalam kode sumber untuk mendapatkan string itu.

beristirahat
sumber
42

Anda lupa printhasilnya. Apa yang Anda dapatkan adalah hasil Pcetakannya RE(P)Ldan bukan hasil cetakan sebenarnya.

Dalam Py2.x Anda harus seperti itu

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

dan di Py3.X, print adalah fungsi, jadi Anda harus melakukannya

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

Nah, itu jawaban singkatnya. Python Interpreter Anda, yang sebenarnya adalah REPL, selalu menampilkan representasi string daripada keluaran yang sebenarnya ditampilkan. Representasi adalah apa yang Anda dapatkan dengan reprpernyataan itu

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

Anda perlu printmendapatkan hasil itu.
Kamu seharusnya melakukan

>>> 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
sumber
4

Anda harus mencetaknya:

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
akar
sumber
4

Ketika Anda mencetaknya dengan ini, print 'I\nwould\nexpect\nmultiple\nlines'Anda akan mendapatkan:

I
would
expect
multiple
lines

Ini \nadalah karakter baris baru yang khusus digunakan untuk menandai END-OF-TEXT. Ini menandakan akhir dari baris atau teks. Karakteristik ini dimiliki oleh banyak bahasa seperti C, C ++ dll.

Sibi
sumber