问题描述
我正在使用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行上有一个多余的逗号导致上述错误。只需删除多余的逗号即可解决此错误。