Python - Yeni satırla katıl


92

Python konsolunda şunu yazdığımda:

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

Verir:

'I\nwould\nexpect\nmultiple\nlines'

Böyle bir çıktı görmeyi beklememe rağmen:

I
would
expect
multiple
lines

Burada neyi özlüyorum?

Yanıtlar:


90

Konsol, dizenin kendisini değil gösterimi yazdırıyor.

Ön eklerseniz print eklerseniz, beklediğinizi alırsınız.

Bir dizge ile dizenin gösterimi arasındaki fark hakkında ayrıntılar için bu soruya bakın . Süper basitleştirilmiş, temsil, bu dizeyi elde etmek için kaynak koduna yazacağınız şeydir.


42

Sonucu unuttunuz print. Ne olsun PiçindeRE(P)L değil gerçek baskılı sonucu.

Py2.x'te şöyle bir şey yapmalısınız:

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

ve Py3.X'te, yazdırma bir işlevdir, bu nedenle yapmalısınız

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

İşte kısa cevap buydu. Aslında bir REPL olan Python Yorumlayıcınız, her zaman gerçek görüntülenen çıktı yerine dizenin temsilini gösterir. Temsil, reprifade ile elde edeceğiniz şeydir

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

14

Gerek print çıktıyı .
Yapmalısın

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

Yazdırmalısınız:

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

Bununla yazdırdığınızda print 'I\nwould\nexpect\nmultiple\nlines'şunları elde edersiniz:

I
would
expect
multiple
lines

\nÖzel olarak SONU METİN işaretleme için kullanılan yeni bir satır karakterdir. Satırın veya metnin sonunu belirtir. Bu özellik C, C ++ vb. Birçok dil tarafından paylaşılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.