【发布时间】:2017-06-06 17:41:33
【问题描述】:
我使用 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
非常感谢!
【问题讨论】:
-
你可以尝试不使用python直接将文件导入sqlite3。
-
我现在正在尝试使用 SQLite 数据库浏览器,它需要很长时间......但对我来说这不是一个好的解决方案,因为在将值写入数据库之前,我必须在数字上添加一些数字什么我必须决定用python。所以我仍然通过python寻找另一种解决方案。
-
见stackoverflow.com/a/9233174/14420,需要用
encoding=...打开
标签: python file python-3.x text-files decode