2013-11-03 83 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