【发布时间】:2015-05-15 15:34:11
【问题描述】:
我正在处理 python 中的一个非常大的 csv 文件,其中一些行抛出错误“'utf-8' codec can't decode byte 0x9b in position 7657: invalid start byte”。有没有办法在不手动删除或修复数据的情况下跳过不是 utf-8 的行?
for filename in filenames:
f = open(filename, 'rt')
reader = csv.reader(f, delimiter = ',')
for row in reader:
#process data for future use
我不能使用非utf8的数据,因为后面的进程需要使用utf-8
【问题讨论】:
-
您的文件是否以 UTF-8 编码并且损坏了?或者它实际上是在其他一些你应该正确处理的编码中?
-
或者您是否尝试将数据打印到非 UTF-8 终端(如在 Windows 上)?
-
你应该展示你的代码,你可以添加一个
try except,当这个特定的错误出现时它就会通过。但这意味着会丢失一些数据。 -
正如您所说的 UTF8,Python 版本 2 和 3 的行为会有所不同。你想要 Python2 还是 Python3?