大型csv文件中的损坏行

时间:2013-01-01 15:58:32

标签: python csv

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

谢谢。

2 个答案:

答案 0 :(得分:0)

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

例如:

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

然后解析chunk_file,查看解析了多少数据。如果相等,继续;如果没有,它就在那里被腐蚀了。

答案 1 :(得分: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)

这有可能主要打印有问题的行,这可能有助于您集中调试工作。