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

时间:2015-08-18 19:07:39

标签: python regex unicode special-characters python-unicode

我从网上抓下了数以百万计的字符串:

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

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

\\x.*[0-9]

2 个答案:

答案 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')