2013-05-03 69 views
3

在Python 3.x中,特殊重新序列'\ s'匹配包括[\ t \ n \ r \ f \ v]的Unicode空白字符。如何使用正則表達式去除製表符和換行符

以下代碼旨在用空格替換製表符和換行符。

import re 
text = """Hello my friends. 
    How are you doing? 
I'm fine.""" 
output = re.sub('\s', ' ', text) 
print(output) 

但是,該選項卡仍然存在於輸出中。爲什麼?

+3

你確定「tab」不只是一堆空格嗎?大多數(如果不是全部的話)IDE用四個空格替換一個標籤。使用'\ t'作爲選項卡,它將起作用。 – Volatility 2013-05-03 09:33:05

+0

...但我的問題的重點是'\ s'應該包含'','\ n'和'\ t' – 2013-05-03 09:34:15

+3

是的,但它會用空格替換每個空白字符。一組空間將仍然是一組空間。如果你想用一個空格替換一組空白字符,可以使用'r'\ s +''。 – Volatility 2013-05-03 09:34:53

回答

9

問題是(可能)您的製表符只是一堆空格。

>>> re.sub(r"\s+", " ", text) 
"Hello my friends. How are you doing? I'm fine." 
+2

打我吧:) +1 – HennyH 2013-05-03 09:39:27

+0

這的確是在我的問題,但它不是在我原來的代碼。如何在SO問題中輸入標籤? – 2013-05-03 09:45:57

+0

@ user1975053除了表示選項卡爲「\ t」我不相信你可以。所以你可以用你的問題做的最好的做法是將你的字符串改爲「你好我的朋友。\ n \ t你在做什麼?\ n我很好。」 – 2013-05-03 09:46:56

相關問題