0

我有一个中文文档,但是文档中有很多因为解码错误而留下的错误字符串,看起来都像fffdff10什么的。

现在我需要删除所有出现的那些错误字符串,所以我需要知道它们的模式,但我找不到有用的信息。我现在似乎只知道它们由 4 个字符组成,它们以 'ff' 开头,但最后两个是不确定的。

例如,错误字符串可能如下所示:300dfffdafffdnormalff0cword

我想要的上面两个词是:300danormalword

我不能删除所有以四个字母开头的模式,ff因为有正常的单词以它们开头。

是否有一个单一的 re 模式可以代表它们?或者有没有其他推荐的方法?谢谢。

顺便说一句,我在 Python 中这样做,所以任何 Pythonic 方式都受到高度赞赏!

谢谢。

更新:</p>

我最终使用了模式ff(fd|\d\w|\w\d)并删除了几乎所有的错误。

一些错误,例如ff07ff50没有被删除,这很奇怪,因为它们应该被 re 模式删除,但是少量的错误在我的容忍范围内。

4

2 回答 2

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)
于 2012-06-27T10:49:50.587 回答
0

我最终使用了模式ff(fd|\d\w|\w\d)并删除了所有但只有几个错误。

一些错误,如 ff07 和 ff50 没有被删除,这很奇怪,因为它们应该被 re 模式删除,但是少量的错误在我的容忍范围内。

于 2012-06-28T12:14:05.560 回答