我有一个中文文档,但是在文档中由于解码错误而留下了很多错误字符串,它们看起来都像fffd
,ff10
或其他什么。
现在我需要删除所有出现的错误字符串,所以我需要知道它们的模式,但我找不到有用的信息。现在我只想知道它们是由4个字符组成的,它们以'ff'开头,但最后两个是不确定的。
例如,错误字符串可能如下所示:300dfffd
或afffdnormalff0cword
。
上述两个字我想要的是:300d
和anormalword
。
我无法删除所有以ff
开头的四个字母图案,因为有正常的单词从它们开始。
是否有一个可以代表它们的重新模式?或者有其他推荐的方式吗?感谢。
顺便说一下,我在Python中这样做,所以任何Pythonic方式都非常感谢!感谢。
更新:
我最终使用模式ff(fd|\d\w|\w\d)
并删除了几乎所有错误。
有些错误(例如ff07
和ff50
)未被删除,这很奇怪,因为它们应该已被re模式删除,但是少量错误在我的容忍范围内。
答案 0 :(得分:2)
并非所有与您谈论的角色都是错误。 U + FFFD是错误替换字符,这意味着某些解码步骤无法找到要使用的字符。 U + FF0C是一个全角逗号,U + FF10是一个全宽零,这些都是完全有效的字符,可能是你要保留的字符。
如果您愿意,可以删除它们:
doc = mydoc.encode('charmap', 'ignore')
如果你有不喜欢的特定Unicode字符,那么:
bad = set(u"\ufffd\uff10\uff0c") # etc
mydoc = u"".join(c for c in mydoc if c not in bad)
答案 1 :(得分:0)
我最终使用了模式ff(fd|\d\w|\w\d)
并删除了所有错误。
有些错误(例如ff07和ff50)没有被删除,这很奇怪,因为它们应该被重新模式删除,但是少量错误在我的容忍范围内。