В консоли Python, когда я печатаю:
>>> "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
дает:
'I\nwould\nexpect\nmultiple\nlines'
Хотя я ожидаю увидеть такой вывод:
I
would
expect
multiple
lines
Что мне здесь не хватает?
В консоли 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 Interpreter, который фактически является 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
Вы должны напечатать его:
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
Когда вы печатаете его с помощью этого print 'I\nwould\nexpect\nmultiple\nlines'
, вы получите:
I
would
expect
multiple
lines
\n
- это новый символ линии, специально используемый для маркировки END-OF-TEXT. Это означает конец строки или текста. Эти характеристики разделяются многими языками, такими как C, С++ и т.д.