0

我正在使用 python 使用 csv 模块将行从 csv 文件提取到列表中。csv 文件相当大,大约 45,000 行,而且似乎有些行已损坏。
使用 python 的 csv.reader 模块时,它只读取大约 1000 行,然后到达损坏的行并停止读取,甚至没有给出错误消息。由于文件非常大,手动更改非常困难。我为第一个损坏的行做了一次,它确实设法再读取了 500 行,然后它显然到达了另一个损坏的行并停止了。我会很高兴了解如何处理这个问题,因为打开文件并编辑它是不可能的,因为它的大小(~500 MB)。

谢谢你。

4

2 回答 2

0

如果可以安全地假设每一行都是一个条目,您可以尝试将文件拆分为大约 500 行的块,一旦您注意到解析的条目数不是行数,您可以检查较小的子集,等等。

例如:

for i, line in enumerate(original_file):
    chunk_file.write(line+'\n')
    if i == 500: break

然后解析一下chunk_file,看看解析了多少数据。如果相等,继续;如果没有,它在那里被破坏了。

于 2013-01-01T16:09:30.817 回答
0

我建议尝试类似:

with open('largeFile.csv', 'r') as csvfile:
    for k, line in enumerate(csvfile):
        row = line.strip().split(',')
        if len(row) != <YourExpectedNumberOfColumns>:
            print(k,row)

这代表了大部分打印有问题的行的机会,这可能有助于您集中调试工作。

于 2017-04-06T01:58:17.913 回答