Python 格式错误的CSV文件和按块读取的CSV

Python 格式错误的CSV文件和按块读取的CSV,python,csv,pandas,Python,Csv,Pandas,我得到了一个csv文件:22个Go大小,46000000行 为了节省内存,csvfile是按块读取和处理的 tp = pd.read_csv(f_in, sep=',', chunksize=1000, encoding='utf-8',quotechar='"') for chunk in tp: chunk; 但文件格式不正确并引发异常: Error tokenizing data. C error: Expected 87 fields in line 15092657, sa

我得到了一个csv文件:22个Go大小,46000000行 为了节省内存,csvfile是按块读取和处理的

tp = pd.read_csv(f_in, sep=',', chunksize=1000, encoding='utf-8',quotechar='"') 
for chunk in tp: 
   chunk;
但文件格式不正确并引发异常:

Error tokenizing data. C error: Expected 87 fields in line 15092657, saw 162

有没有办法丢弃这个区块并继续循环下一个区块?

这个问题与前面的问题类似:


正如答案中所说的,您必须意识到使用error\u bad\u lines=False会删除该行,并建议更好的方法是调查数据集中的行。

正如EdChum所说,问题是如何跳过该块,添加“error\u bad\u lines=False”就可以做到这一点。
有没有办法截获给出错误线路的跟踪并计算错误线路的数量

要截取错误行,我使用以下代码:

# somewhere to store output
err = StringIO.StringIO()
# save a reference to real stderr so we can restore later
oldstderr = sys.stderr
# set stderr to our StringIO instance
sys.stderr = err

tp = pd.read_csv(f_in, sep=',', chunksize=1000, encoding='utf-8',quotechar='"', error_bad_lines=False) 
for chunk in tp:
      chunk

# restore stderr 
sys.stderr = oldstderr

# print(or use) the stored value from previous print
print err.len + 'lines skipped.'
print err.getvalue()
err.close()

如果您尝试以下操作,它是否会跳过:
tp=pd.read_csv(f_-in,sep=',',engine='c',chunksize=1000,encoding='utf-8',quotechar=',error_bad_lines=False)?
将尝试一下,然后返回结果。OP要求跳过该区块,而不是专门调查文档中的行失败原因:
警告错误行:布尔,默认为True如果错误错误错误行为False,并且警告错误行为True,将输出每个“错误行”的警告。(仅对C解析器有效).
因此,如果您打开
error\u bad\u lines=False
则它应输出一个包含行号的警告,然后您必须检查每个警告