【发布时间】:2020-08-24 19:22:53
【问题描述】:
我正在尝试使用语料库来训练 ML 模型,但我遇到了一些可能由其他人对文件的转换/注释引起的编码错误。在vim 中打开文件时,我可以直观地看到错误,但 python 在阅读时似乎没有注意到它们。语料库相当大,所以我需要找到一种方法让 python 检测它们,并希望有一种方法来纠正它们。
这是在vim中查看的示例行...
# ::snt That<92>s what we<92>re with<85>You<92>re not sittin<92> there in a back alley and sayin<92> hey what do you say, five bucks?
应该是撇号, 应该是 3 个点。还有许多其他值出现在其他行上。做一些谷歌搜索,我认为原始编码可能是 CP1252,但目前 Linux 下的 file 命令将此文件列为 UTF-8。我尝试了几种方法来打开它,但没有运气......
with open(fn) as f: 返回
# ::snt Thats what were withYoure not sittin there in a back alley and sayin hey what do you say, five bucks?
这是跳过这些标记并连接单词,这是一个问题。
with open(fn, encoding='CP1252') as f:返回
# ::snt ThatA's what weA're withA...YouA're not sittinA' there in a back alley and sayinA' hey what do you say, five bucks?
在视觉上为那些奇怪的字符插入“A”。
有没有办法读取这个大文件并检测其中的编码错误。更好的是,有没有办法纠正它们?
【问题讨论】:
-
那个 lib 似乎不起作用,
unidecode也不起作用,尽管unidecode至少删除了有问题的字符。 -
cp1252 中只有 some 行吗?整个文件是cp1252吗?
-
我有点不清楚发生了什么。以 CP1252 读取文件(或仅上面的示例行)无法正常工作,所以我猜该文件是用 UTF-8 编码的,但其中包含
vim能够检测到但 python 忽略的无效字符? -
也许您可以将原始文件放在 Google Drive(或类似门户)上,以便我们下载原始文件并进行测试。
标签: python python-3.x unicode