2017-07-17 61 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')

我希望这可以帮助你