Python - Приєднуйтесь до нового рядка


89

У консолі Python, коли я набираю:

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

Дає:

'I\nwould\nexpect\nmultiple\nlines'

Хоча я очікував би побачити такий результат:

I
would
expect
multiple
lines

Чого мені тут не вистачає?

Відповіді:


88

Консоль друкує подання, а не сам рядок.

Якщо ви введете префікс до print, ви отримаєте те, що очікуєте.

Докладніше про різницю між рядком та поданням рядка див. У цьому питанні . Супер спрощене, подання - це те, що ви ввели у вихідному коді, щоб отримати цей рядок.


41

Ви забули printпро результат. Те , що ви отримаєте це Pв , RE(P)Lа не фактичний результат друку.

У Py2.x ви повинні щось на зразок

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

а в Py3.X друк - це функція, тому вам слід це зробити

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

Тепер це була коротка відповідь. Ваш інтерпретатор Python, який насправді є REPL, завжди відображає подання рядка, а не фактичний відображений результат. Представлення - це те, що ви отримали б із reprзаявою

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

13

Вам потрібно printотримати цей результат.
Ви повинні це зробити

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

Ви повинні роздрукувати його:

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

Коли ви надрукуєте його за допомогою цього, print 'I\nwould\nexpect\nmultiple\nlines'ви отримаєте:

I
would
expect
multiple
lines

Це \nновий символ рядка, спеціально використаний для позначення КІНЦЯ ТЕКСТУ. Це означає кінець рядка або тексту. Ці характеристики є спільними для багатьох мов, таких як C, C ++ тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.