【问题标题】:How to remove special characters from strings in python?如何从python中的字符串中删除特殊字符?
【发布时间】:2015-11-11 21:07:19
【问题描述】:

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

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

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

\\x.*[0-9]

【问题讨论】:

  • 它们不是特殊字符,是一个utf-8编码的字符串,打印时会输出WHAT’S UP DOC?
  • 所以你想删除任何非ascii?即print(s.decode("ascii",errors="ignore"))
  • 像黄油一样工作。谢谢!!
  • @mousecoder,工作吧

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


【解决方案1】:

特殊字符实际上并不是多个字符长,这就是它们的表示方式,因此您的正则表达式不起作用。如果您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?'

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 1970-01-01
      • 2011-04-11
      • 2016-01-23
      相关资源
      最近更新 更多