gpt4 book ai didi

python - 读取文本文件的行并获取字符映射解码错误

转载 作者:行者123 更新时间:2023-11-28 21:22:37 25 4
gpt4 key购买 nike

我正在使用 python3.3 和 sqlite3 数据库。我有一个大约 270mb 的大文本文件,我可以在 Windows7 中用写字板打开它。

该文件中的每一行如下所示:

术语\t 编号\n

我想读取每一行并将值保存在数据库中。我的代码如下所示:

f = open('sorted.de.word.unigrams', "r")
for line in f:

#code

我能够将所有数据读入我的数据库,但只读到某一行,我建议可能是所有行的一半。然后我收到以下错误:

File "C:\projects\databtest.py", line 18, in <module>
for line in f:
File "c:\python33\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 140: character maps to <undefined>

我尝试使用 encoding = utf-8 打开文件,但即使是其他编解码器也无济于事。然后我尝试通过另存为 utf-8 txt 文件用写字板制作副本。但是写字板崩溃了。

这里的问题在哪里,看起来那行中有一些 python 无法处理的字符。我该怎么做才能完全读取我的文件?或者是否可以忽略此类错误消息并继续下一行?

您可以在这里下载打包文件:

http://wacky.sslmit.unibo.it/lib/exe/fetch.php?media=frequency_lists:sorted.de.word.unigrams.7z

非常感谢!

最佳答案

我检查了文件,问题的根源似乎是文件包含至少两种编码的单词:可能是 cp1252 和 cp850。字符 0x81 在 cp850 中是 ü 但在 cp1252 中未定义。您可以通过捕获异常来处理这种情况,但其他一些德语字符映射到 cp1252 中有效但错误的字符。如果您对这样一个不完美的解决方案感到满意,可以按照以下方法进行操作:

with open('sorted.de.word.unigrams','rb') as f: #open in binary mode
for line in f:
for cp in ('cp1252', 'cp850'):
try:
s = line.decode(cp)
except UnicodeDecodeError:
pass
else:
store_to_db(s)
break

关于python - 读取文本文件的行并获取字符映射解码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18648154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com