Python – join换行符

在Python控制台中,当我input:

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

得到:

 'I\nwould\nexpect\nmultiple\nlines' 

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

 I would expect multiple lines 

我在这里错过了什么?

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

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

有关string与string表示之间的区别的详细信息,请参阅此问题 。 超级简化,表示法是您在源代码中input以获取该string的内容。

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

在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,总是显示string的表示而不是实际显示的输出。 您可以通过repr语句获得表示forms

 >>> 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,C ++等许多语言共享