У консолі Python, коли я набираю:
>>> "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
Дає:
'I\nwould\nexpect\nmultiple\nlines'
Хоча я очікував би побачити такий результат:
I
would
expect
multiple
lines
Чого мені тут не вистачає?
Відповіді:
Консоль друкує подання, а не сам рядок.
Якщо ви введете префікс до print, ви отримаєте те, що очікуєте.
Докладніше про різницю між рядком та поданням рядка див. У цьому питанні . Супер спрощене, подання - це те, що ви ввели у вихідному коді, щоб отримати цей рядок.
Ви забули 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'
Вам потрібно 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
Коли ви надрукуєте його за допомогою цього, print 'I\nwould\nexpect\nmultiple\nlines'ви отримаєте:
I
would
expect
multiple
lines
Це \nновий символ рядка, спеціально використаний для позначення КІНЦЯ ТЕКСТУ. Це означає кінець рядка або тексту. Ці характеристики є спільними для багатьох мов, таких як C, C ++ тощо.