无法确定此错误的原因:发生了异常:ParserError对数据进行令牌化时出错 C错误:第51行中应有1个字段,看到了2

问题描述

我正在使用tabula-py读取一些pdf文件中的数据,但是一直出现此错误

发生异常:ParserError 标记数据时出错。 C错误:第51行中应有1个字段,看到了2

我正在阅读的PDF几乎与构建此代码的PDF完全相同。例如,我在与另一个PDF进行测试时构建了它,现在正在更改为具有相同格式和样式的新的更新版本,但是代码现在失败并引发此错误

不知道我在做什么错/为什么以前起作用的这段代码不再起作用。

代码段:

tabula.convert_into_by_batch("-----",stream = True,output_format='csv',pages='11-57')

path = ("-------")

filenamelist = os.listdir(path)
updated_path = path+ "\\" + filenamelist[0]


new_frame = pd.read_csv(updated_path,skiprows=2,encoding='ISO-8859-1') #error thrown here 

解决方法

将pdf转换为csv并不是完美的转换。从pdf转换任何东西实际上是非常困难的,而且无论您使用什么库,都可能很困难。您的错误告诉我,转换后的CSV的第51行上有一个pandas没想到的逗号。因此,在导致“坏”行的所有行中,您只有一个逗号(例如,它期望看到1个值)。然后在第51行上,它遇到2个值,或者遇到一个末尾带有逗号的值,这使其成为格式不正确的csv。

import pandas as pd
import io

bad_csv_file = io.StringIO("""
A
1
2
3
99
50,100
""".strip())

pd.read_csv(bad_csv_file)

输出

Error tokenizing data. C error: Expected 1 fields in line 6,saw 2

请注意,第6行上有一个多余的逗号导致上述错误。只需删除多余的逗号即可解决此错误。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...