2016-04-08 158 views
0

我的問題聽起來很愚蠢,但是有些東西不適用於python 3.x和re.sub?因爲這個簡單的代碼似乎是錯誤的,它不會在我的控制檯上打印'(026)660 68 21'。有人能幫我嗎?re.sub在python中無法正常工作

import re  
word = "Tél : (026) 660 68 21" 
w = re.sub("Tél : ", "", word, count=1) 
print(w) 
+1

作品在我的控制檯上。 Python 3.4.3,Ubuntu Kylin。 –

+0

嘗試在非Unicode字符上進行測試're.sub(「6」,「」,word,count = 1)「會給你帶來什麼? –

+2

你爲什麼首先使用re.sub? 'w = word.replace(「Tél:」,「」))'。此外,如果子工作不正常,您最有可能遇到編碼問題 –

回答

1

我無法用您的問題中的代碼重現問題。

但你看到的可能發生,例如,如果E AIGU字符是在不同形式的內容:

>>> word = "Tél : (026) 660 68 21" 
>>> substring = "Tél : " 
>>> re.sub(substring, "", word, count=1) 
'Tél : (026) 660 68 21' 

的修復:

>>> from unicodedata import normalize 
>>> def n(str_, form='NFC'): 
     return normalize(form, str_) 
... 
>>> re.sub(n(substring), "", n(word), count=1) 
'(026) 660 68 21' 
+0

也有可能,其中一個空格可能不是U + 0020,而是任何[這些](https://codepoints.net/search?gc=Zs)(經典U + 00A0)。如果有人拉惡作劇,冒號是[this](https://codepoints.net/U+2236)。 – Boldewyn

+0

我也在考慮e aigu,因爲字符串是由數據報廢產生的,所以可能是問題所在。但是你的代碼對我來說不起作用......但是感謝你的直覺,我要檢查這一方面 – jjyoh