如何在Python中打印一个字符串但不包括'\n'

18

假设我的字符串是:

' Hai Hello\nGood eve\n'

我该如何消除两个字符串之间的 '\n' 并使输出的字符串像这样:

 Hai Hello Good eve 

11
他并不是在询问如何替换字符串的功能,这个问题不能直接在手册中查找到。如果每个人都能查阅手册,那 StackOverflow 就不存在了! - Niyaz
1
从问题的布局来看,我认为OP想知道如何呈现带有换行符的字符串,但没有阅读格式指南...并使用了几个问号。 - Torsten Marek
从标题上看,我以为这是关于sys.stdout.write()风格答案的,但是从手册中很难得到。然而,string replace()应该可以在手册中找到。 - Douglas Leeder
2
点击rejinacm的个人资料。至少有34个问题中的30个可以通过打开Python文档页面轻松解决。这已经超出了新手范畴,进入了“求代码”的范畴。前十二个问题给了新手一个休息机会。 - S.Lott
他并不是在要求使用replace方法。他想要一个包含多行的字符串,而不需要显式地为每一行添加\n。 - hasen
8个回答

24
如果您不想让 print 语句在结尾打印出换行符:
import sys
sys.stdout.write("text")

2
我认为你应该包含被要求的内容,这样你的答案才能独立阅读。或者至少你应该包含一个指向最合适的其他答案的参考。 - Douglas Leeder

21
你可以使用replace方法:
>>> a = "1\n2"
>>> print a
1
2
>>> a = a.replace("\n", " ")
>>> print a
1 2

11

在Python 2.6中:

print "Hello.",
print "This is on the same line"

在Python 3.0中

print("Hello", end = " ")
print("This is on the same line")

5
我知道这是一个非常久远的帖子,但我也遇到了同样的问题,想要为清晰度增加一些内容。我相信原始用户所问的是如何使操作系统将字符串"some text\nsome more text"解释为:
some text some more text
而不是只打印:
"some text\nsome more text"
答案是它已经被解释了。在Ubuntu中,当我将其放入字符串中时,它会自动转义换行符,而我没有要求它这样做。因此,字符串:
"some text\nsome more text"
实际上是
"some text\\nsome more text"
需要做的就是使用mystring.replace("\\\n", "\n"),就可以得到所需的输出。希望这很清晰,并帮助未来的某些人。

差不多了!我认为你只需要一个转义字符。所以应该是 "\\n" 而不是 "\\\n" - dijonkitchen

3
在 "print" 后添加逗号:
print "Hai Hello",
print "Good eve",

虽然在Python 3.0中已经取消了"print"命令


5
在Python 3中,print并没有“消失”,而是从语句变成了函数调用。 - DLJessup

2

虽然这篇文章有点老,但似乎没有人成功回答了你的问题。有两种可能的答案:

首先,你的字符串实际上是 Hai Hello\\\\nGood eve\\\\n,因为转义字符\\\\而打印成了Hai Hello\\nGood eve\\n。简单的解决方法是 mystring.replace("\\\\n","\\n")(参见http://docs.python.org/reference/lexical_analysis.html#string-literals)。

或者,你的字符串不是一个字符串,而是一个元组。我之前也遇到了类似的错误,当时我以为自己有一个字符串,但从打印结果来看它是一个很长的字符串。我的打印结果如下:

("Lorem ipsum dolor sit amet, consectetur adipiscing elit.\nEtiam orci felis, pulvinar id vehicula nec, iaculis eget quam.\nNam sapien eros, hendrerit et ullamcorper nec, mattis at ipsum.\nNulla nisi ante, aliquet nec fermentum non, faucibus vel odio.\nPraesent ac odio vel metus condimentum tincidunt sed vitae magna.\nInteger nulla odio, sagittis id porta commodo, hendrerit vestibulum risus.\n...,"")

很容易忽略开头和结尾的括号,只注意到了 \n。打印 mystring[0] 应该可以解决这个问题(或者是列表/元组中的任何索引)。


1
>>> 'Hai Hello\nGood eve\n'.replace('\n', ' ')
'Hai Hello Good eve '

0

不确定这是否是您要求的,但您可以使用三引号字符串:

print """Hey man
And here's a new line

you can put multiple lines inside this kind of string
without using \\n"""

将打印:

嘿,伙计
这里是一个新行
你可以在这种字符串内放置多行 而不使用 \n

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接