2017-02-24 62 views
0

我這種情況,我有錯點的句子來處理,這句話(。):正則表達式替換爲字符串的Python

sentence = 'Hi. Long time no see .how are you ?can you follow [email protected]?' 

我試圖規範這句話,如果你看到它,有是一些錯誤的格式句子(.how,?can和。@ abcde)。我正在考慮使用正則表達式來處理這個問題,因爲句子不斷變化。這是到目前爲止我的代碼:(。)(?) 進口再

character = ['.','?','@'] 

sentence = 'Hi. Long time no see .how are you ?can you follow [email protected]?' 

sentence = str(sentence) 
for i in character: 
    charac = str(i) 
    charac_after = re.findall(r'\\'+charac+r'\S*', sentence) 
    if charac_after: 
     print("Exist") 
     sentence = sentence.replace(charac, charac+' ') 

print(sentence) 

結果一些如何跳過點,並在(@),它只是處理問號。這是結果: 存在

Hi. Long time no see .how are you ? can you follow [email protected]? 

它應該是「嗨,好久不見你怎麼可以你關注@ ABCDE。?。?」。我不知道「r'\'+ charac + r'\ S *'」中的雙反斜槓是錯的還是什麼,我錯過了什麼?

如何處理所有角色?請幫忙。

+1

我不知道蟒蛇,但你可能需要正確逃生看到http://stackoverflow.com/questions/280435/escaping-regex-string-in-python – Fallenhero

+0

如果'r'\\''應該轉義下一個字符,則只需要使用單個反斜槓。目前你正在逃避反斜槓。但是,您應該使用're.escape'來代替。 –

+0

但我認爲你的代碼有問題。你會在每一個'。|?| @'之後增加一個空格,這個 – Fallenhero

回答

0

沒有蟒蛇的任何knowlegde我認爲你需要做的是這樣的:

(按從@Sebastian Proske建議)

character = ['.','?','@'] 
sentence = str('Hi. Long time no see .how are you ?can you follow [email protected]?') 
sentence = re.sub(r'([' + ''.join(map(re.escape, character)) + r'])(?=\S)', r'\1 ', sentence) 
print(sentence) 

我不知道有關的代碼,但正則表達式。在這裏看到: https://regex101.com/r/HXdeuK/2

看到演示這裏https://repl.it/Fw5b/3

+0

嗨,以前感謝,我得到新的錯誤: sre_constants.error:模式的意外結束 – ytomo

+0

這些字符會改變?或者你爲什麼不直接在正則表達式中使用它們,就像我在regex101 – Fallenhero

+0

上做的那樣。我得到了反向引用錯誤,我更新了它。現在它完美的工作 – Fallenhero