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