如何从 python 中的字符串中删除特殊字符?

How to remove special characters from strings in python?

我从网上抓取了数百万个字符串,例如:

s = 'WHAT\xe2\x80\x99S UP DOC?'
type(s) == str # returns True

从网络上抓取时,不可避免地会出现上述字符串中的特殊字符。应该如何删除所有这些特殊字符以保留干净的文本?基于我对 unicode 字符的非常有限的经验,我正在考虑这样的正则表达式:

\x.*[0-9]

特殊字符实际上不是多个字符长,这正是它们的表示方式,因此您的正则表达式将不起作用。如果你 print 你会看到实际的 unicode (utf-8) 字符

>>> s = 'WHAT\xe2\x80\x99S UP DOC?'
>>> print(s)
WHATâS UP DOC?
>>> repr(s)
"'WHATâ\x80\x99S UP DOC?'"

如果你只想打印ascii字符你可以检查字符是否在string.printable

>>> import string
>>> ''.join(i for i in s if i in string.printable)
'WHATS UP DOC?'

正如 Padriac 在评论中提到的,这对我有用:

s.decode('ascii', errors='ignore')