Python 用于删除奇怪字符的正则表达式

Python regex for removing strange characters

您好,

我有一个字符串列表,其中包含一些奇怪的字符(例如:�)。 例如:

'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])(.?)+)+ 但它不起作用。我是正则表达式的新手,所以我寻求帮助。

谢谢

处理这些字符而不是删除它们可能更好,但是如果您想在 Python 中删除它们,您可以不使用正则表达式。

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

此行将解码 Python 中的字节数组,并且只保留 ASCII 字符。

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

您应该找到要删除的子字符串 为此,您需要找到子字符串的开头和结尾。

使用字符串方法可以做得更好

举个例子:

如果 在任何字符串中删除的起始字符是:�

字符串的结尾是字符串的 len:

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

希望对您有所帮助

根据我的经验,创建要保留的 'safe' 个字符的列表会更安全一些。您今天要做的是 'fix' 那句话,并摆脱令人讨厌的东西。但是,如果出现更多愚蠢的东西怎么办?我要求我处理的数据只保留 'standard ascii' 由企业主决定,所以我使用这个正则表达式:

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

这样我就删除了那个字符 class 中没有的所有内容,几乎所有标准键盘上没有的内容。走这条路你可能会有更好的运气。很难预测接下来会出现哪些垃圾字符,然后您最终会编辑正则表达式以不断添加要删除的内容。列出要保留的东西:)