大量文件中的UnicodeDecodeError问题

Problem with UnicodeDecodeError in massive file

提问人:Souni 提问时间:8/24/2023 最后编辑:ekhumoroSouni 更新时间:8/24/2023 访问量:43

问:

我正在尝试使用 pandas 读取一个 7GB csv 压缩文件,按块读取。

该文件是 UTF-8-BOM,所以我在read_csv中使用了该编码。 读取 2 小时后,它总是引发以下错误:

UnicodeDecodeError: 'utf-8' codec cant decode byte 0xd0 in position 7478: invalid continuation byte

我尝试了很多不同的编码。它只经过latin_1但开头有一些奇怪的字符,我认为这是文件的 BOM。

当我使用“大文本查看器”打开文件并转到文件末尾时,程序崩溃了。这不会发生在其他海量文件中。我怀疑文件末尾有问题导致此错误,因为它总是在 2 小时后引发。

我还尝试将 csv 转换为 parquet,但它引发了同样的错误。

我在可视化文件时遇到了问题,导致它很大,所以我不知道下一步该怎么做。

Python Pandas 编码 UTF-8 大文件

评论

2赞 ekhumoro 8/24/2023
您知道错误在文件中的位置。因此,在模式下打开文件并寻找在此之前的位置,然后读取包含问题字节的小块(例如读取字节 7450 到 7500)。一旦你明白了,编辑你的问题并显示原始字节块(不要试图解码它)。也许可以检查该块的字节并修复错误。但是,该位置之后可能会有更多错误,这可能表明编码实际上不是 utf-8(例如,utf-8-bom 可能已附加到具有不同编码的文件)。rb
0赞 ekhumoro 8/24/2023
PS:文件中有哪些类型的数据?它是否可能包含大量非 ASCII 字符?
0赞 Souni 8/24/2023
它的国际欧洲数据,所以我认为它可以包含非 ASCII 字符。会尝试按照你解释的去做。另外,错误给我的位置是否有可能是当前正在读取的块内的位置?
0赞 ekhumoro 8/24/2023
PPS:如果可能,请同时显示文件前三行的字节(包括 BOM)。
1赞 ekhumoro 8/24/2023
不幸的是,如果位置在当前块中,则需要计算块数,然后乘以块大小来计算文件位置。因此,也许只需在模式下读取行并解码每行,直到您以这种方式找到错误。无论如何,拥有一条完整的生产线可能会更有用。rb

答: 暂无答案