在 Python 控制台中,当我键入:
>>> "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
给出:
'I\nwould\nexpect\nmultiple\nlines'
虽然我希望看到这样的输出:
I
would
expect
multiple
lines
我在这里想念什么?
控制台正在打印表示,而不是字符串本身。
如果你加上前缀print
,你会得到你所期望的。
有关字符串和字符串表示形式之间差异的详细信息,请参阅此问题。超级简化,表示是您在源代码中键入以获取该字符串的内容。
你忘print
了结果。你得到的是P
inRE(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'
你需要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
是专门用于标记END-OF-TEXT的\n
换行符。它表示行或文本的结束。许多语言(如 C、C++ 等)都具有此特性。
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]));