我从网上抓取了数百万个字符串,例如:
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?'
