我正在使用python通过csv模块将csv文件中的行提取到列表中。csv文件相当大,大约有45,000行,其中一些行似乎已损坏。
当使用python的csv.reader模块时,它只读取大约1000行,然后到达损坏的行并停止读取,甚至没有给出错误消息。因为文件非常大,所以很难手动更改它。我对第一个被损坏的行做了一次,它确实设法读取了500多行,然后它显然到达了另一个被损坏的行并停止。我很高兴得到关于如何处理这个问题的想法,因为打开文件和编辑它是不可能的,因为它的大小(~500MB)。
谢谢。
发布于 2013-01-02 00:09:31
如果假设每一行都是一个条目是安全的,那么您可以尝试将文件拆分成大约500行的块,一旦您注意到解析的条目数不是行的数目,就可以检查较小的子集,依此类推。
例如:
for i, line in enumerate(original_file):
chunk_file.write(line+'\n')
if i == 500: break
然后解析chunk_file
,看看解析了多少数据。如果相等,则继续;如果不相等,则在那里被破坏。
发布于 2017-04-06 09:58:18
我建议尝试一下这样的方法:
with open('largeFile.csv', 'r') as csvfile:
for k, line in enumerate(csvfile):
row = line.strip().split(',')
if len(row) != <YourExpectedNumberOfColumns>:
print(k,row)
这可能主要是打印出有问题的行,这可能会帮助您集中精力进行调试。
https://stackoverflow.com/questions/14111862
复制相似问题