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