获取CParserError:标记数据时出错。 C错误:第1025974行预计有281个字段,见过331

时间:2016-04-20 01:51:37

标签: python-2.7 pandas

我有一个17gb制表符分隔文件,使用python / pandas时出现上述错误

我正在做以下事情:

data = pd.read_csv('/tmp/testdata.tsv',sep='\t')

我还尝试过添加encoding =' utf8'并尝试了read_table和各种标志,包括low_memory = True,但我总是在同一行得到同样的错误。

我在文件上运行了以下内容:

awk -F"\t" 'FNR==1025974 {print NF}' /tmp/testdata.tsv

它返回281表示字段数,因此awk告诉我该行有正确的281列,但是read_csv告诉我我有331列。

我也在1025973和1025975号线上尝试了上面的awk,只是为了确定某些东西不是零而且它们都回来了281个字段。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

所以为了调试这个,我拿了我的标题行,然后从上面取了一行并通过read_csv运行它。然后我又得到了一个错误:

标记数据时出错。 C错误:从第1行开始的字符串中的EOF

问题结果是,默认情况下,如果在分隔符后面立即看到双引号,read_csv将查找结束双引号。

我错误地认为如果我指定了sep =" \ t"它只会在标签上分开而不关心任何其他角色。

长话短说,要解决此问题,请将以下标志添加到read_csv

quoting = 3,即QUOTE_NONE。