从python中的三引号字符串中删除\ n

时间:2013-11-03 18:56:38

标签: python string python-3.x strip

我有以下字符串:

string = """
Hello World
123
HelloWorld
"""

我想清除python中字符串的所有换行符。

我试过

string.strip()

但它并没有按照预期运作。

我应该做什么?

我正在使用python 3.3

感谢。

5 个答案:

答案 0 :(得分:11)

str.strip从字符串的开头和结尾删除空格。

>>> string
'\nHello World\n123\nHelloWorld\n'
>>> string.strip()
'Hello World\n123\nHelloWorld'

如果要删除字符串中的新行字符,可以使用str.replace替换其他字符:

>>> string.replace('\n', ' ')
' Hello World 123 HelloWorld '

答案 1 :(得分:8)

我想指出,根据三重字符串的使用方式,您可以完全避免这个问题。

在Python三引号字符串中,您可以在行尾添加反斜杠(“\”)以忽略换行符。换句话说,您可以使用它在代码中的该位置放置换行符,而不会在字符串中换行。

例如:

"""line 1 \
line 2 \
line 3"""

实际上会变成

line 1 line 2 line 3

如果打印或写入某个文件或其他输出。

以这种方式使用它可以消除任何替换换行符的功能,使您的代码更清晰,更清晰。

编辑:

如果你正在使用这样的反斜杠线延续,你也可以用同样的方式使用简单的单引号字符串;

"line 1 \
line 2 \
line 3"

也相当于

line 1 line 2 line 3

答案 2 :(得分:4)

使用translate代替replace进行此类操作。

>> string.translate(None, "\n")
Hello World123HelloWorld

您将了解使用大文件时fast translate的用法。

答案 3 :(得分:1)

简单str.replace

string.replace('\n', ' ')

答案 4 :(得分:0)

主要问题已经得到解答,但我想补充一点,如果您计划使用使用各行,那么最好不要这样做 -

string = """
Hello World
123
HelloWorld
"""
for line in string.strip().split('\n'):
    print(line)
    # do something with the line
从上面的代码

输出 -

Hello World
123
HelloWorld