【问题标题】:Unable to identify the cause of this error: Exception has occurred: ParserError Error tokenizing data. C error: Expected 1 fields in line 51, saw 2无法确定此错误的原因:发生异常:ParserError 标记数据时出错。 C 错误:第 51 行中应有 1 个字段,看到 2
【发布时间】:2020-11-09 20:09:40
【问题描述】:

我正在使用 tabula-py 从一些 pdf 中读取数据,但一直收到此错误。

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

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

不知道我做错了什么/为什么以前有效的代码不再有效。

代码sn-p:

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 

【问题讨论】:

  • 不确定它是否与错误有关,但您应该使用 os.path.join(path,filenamelist[0]) 来代替“手动”连接路径,不同的操作系统使用不同的符号来路径,并且在 linux 中运行的代码可能在 Windows 中失败

标签: python pandas pdf tabula


【解决方案1】:

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 行有一个额外的逗号会导致上述错误。只需删除多余的尾随逗号即可解决此错误。

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 1970-01-01
    • 2020-11-02
    • 2018-03-14
    • 2021-02-10
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    相关资源
    最近更新 更多