我从网上抓下了数以百万计的字符串:
s = 'WHAT\xe2\x80\x99S UP DOC?'
type(s) == str # returns True
从网上抓取时,上面字符串中的特殊字符是不可避免的。如何删除所有这些特殊字符以保留干净的文本?基于我对unicode字符的非常有限的经验,我正在考虑这样的正则表达式:
\\x.*[0-9]
答案 0 :(得分:3)
特殊字符实际上并不是多个字符长,这就是它们的表示方式,因此你的正则表达式不起作用。如果您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?'
答案 1 :(得分:2)
Padriac在评论中提到这件事对我有用:
s.decode('ascii', errors='ignore')