107

在 Python 控制台中,当我键入:

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

给出:

'I\nwould\nexpect\nmultiple\nlines'

虽然我希望看到这样的输出:

I
would
expect
multiple
lines

我在这里想念什么?

4

6 回答 6

96

控制台正在打印表示,而不是字符串本身。

如果你加上前缀print,你会得到你所期望的。

有关字符串和字符串表示形式之间差异的详细信息,请参阅此问题。超级简化,表示是您在源代码中键入以获取该字符串的内容。

于 2013-01-28T11:20:06.307 回答
46

你忘print了结果。你得到的是PinRE(P)L而不是实际的打印结果。

在 Py2.x 你应该这样

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

在 Py3.X 中, print 是一个函数,所以你应该这样做

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'
于 2013-01-28T11:19:24.507 回答
16

你需要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
于 2013-01-28T11:52:53.177 回答
6

你必须打印它:

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
于 2013-01-28T11:19:23.693 回答
4

当你用这个打印它时,print 'I\nwould\nexpect\nmultiple\nlines'你会得到:

I
would
expect
multiple
lines

是专门用于标记END-OF-TEXT的\n换行符。它表示行或文本的结束。许多语言(如 C、C++ 等)都具有此特性。

于 2013-01-28T11:20:25.557 回答
0

repr() 函数返回给定对象的可打印表示,对于 Python 中的 evalStr() 或 exec 至关重要;例如,您想摆脱 Python 的禅宗:

eng.execString('from this import *');
println('import this:'+CRLF+
  stringReplace(eng.EvalStr('repr("".join([d.get(c,c) for c in s]))'),'\n',CRLF,[rfReplaceAll]));
于 2021-09-19T12:52:56.433 回答