2017-07-17 62 views
0

你好,用於消除奇怪字符的Python正則表達式

我有一個帶有一些奇怪字符(如: )的字符串列表。 例如:

'Replay fortement conseillé �\x9f\x98\x82�\x9f\x98\x82' 

或者:

'Le papa du mois �\x9f\x91\x8a' 

我想從這些字符串中刪除\ x9f \ X91 \ x8a和\ x9f \ X98 \ X82 \ x9f \ X98 \ X82。

我試過這個正則表達式:((.?)\\x[0-9]([a-z]|[0-9])(.?)+)+但它不起作用。我是一個正則表達式的新手,所以我尋求幫助。

感謝您

+0

刪除python標籤,你的問題只是關於正則表達式。 –

+2

@ThomasDussaut我不同意。我想也許OP的正確答案是解決導致奇怪字符擺在首位的編碼問題。 –

+0

做正則表達式研究,你會找到答案。 –

回答

0

根據我的經驗,創建一個要保留的「安全」字符列表會更安全一些。你今天要做的是'修正'這句話,並擺脫糟糕的東西。但是如果出現更多goofball的東西會怎樣?我有我處理,只保留「標準的ASCII」作爲一個企業的老闆決定數據的要求,所以我用這個表達式:

text = re.sub("[^\x20-\x7E]", "", text) 

這樣,我刪除任何東西,是不是在這個字符類,幾乎沒有任何標準鍵盤上的東西。走這條路可能會更好。很難預測什麼是垃圾人物,然後你最終編輯你的正則表達式來繼續添加東西去掉。做一個東西,以保持清單:)

+1

謝謝,工作正常。我修改它以保留需要的字符're.sub('[^^(éèêùçà)\ x20- \ x7E]','',text)' – Nazan

2

它可能更好地處理這些字符,而不是刪除它們,但如果你想刪除它們在Python中,你可以做,沒有正則表達式。

text.decode("ascii", "ignore") 

此行將解碼Python中的字節數組並僅保留ASCII字符。

+0

將字符串轉換爲所需的字節:'text = bytes(text,「utf-8」)' – hadi

1

conseillé中保留字符串中的特定字符,如é

你應該找到你想刪除的子字符串 要做到這一點,你需要找到子字符串的開始和結束。

如果 任何字符串開頭的字符刪除是:

和字符串的結尾是len的字符串:

這與絃樂器方法

爲例做的更好

re.sub(r'�.*','', 'Replay fortement conseillé �\x9f\x98\x82�\x9f\x98\x82')

我希望這可以幫助你