2013-11-03 31 views
3

我有以下字符串:删除 n的蟒蛇

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

我想要清除在Python中字符串的所有换行符。

我试图

string.strip() 

但可根据需要它不工作。

我该怎么办?

我正在使用python 3.3

谢谢。

+0

'与string.replace( '\ n', '')'不工作? – elssar

回答

8

str.strip从一开始就和字符串的结尾去掉空格。

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

如果你想删除新行字符字符串里面的,你可以通过别的使用str.replace替换它们:

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

简单str.replace

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

主要的问题已经回答了,但我会喜欢补充说,如果你计划在使用个别行,你可能会做得更好 -

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

输出从上面的代码 -

Hello World 
123 
HelloWorld 
+0

这与'print(string.strip())'没有什么不同。 – poke

+0

但是,如果他想**使用**个人行呢? –

+0

这将是一个不同的问题,在问题中没有任何建议OP想要这样做。 – poke

3

使用translate,而不是replace对于这种操作。

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

你会意识到如何fast translate是当你与大文件的工作。

6

我想指出,取决于如何使用三引号字符串,你可以完全避免这个问题。

在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 
+0

为什么需要三重引号和反斜杠?为什么不只是反斜杠? –

+1

@AllDaniSpringer你也可以做一个单引号的字符串,它会以同样的方式工作;我只保留三重引号,因为这就是问题所在。不过,我会做出修改来提及这一点。 – Variadicism