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