python-3.x 从PDF中提取跨越多个页面的表格时,如何防止丢失行?

eqqqjvef  于 2023-05-30  发布在  Python
关注(0)|答案(1)|浏览(217)

我有一个总共有33行的PDF表格,但是这个数字可以改变。该表展开到第二页,这意味着它看起来像两个单独的表。
我的目标是将第0、2和3列中的所有项目添加到三个单独的列表中。我已经能够让这个工作,但我注意到一行是从表2失踪,这是第二页上的第一行。
我现在的Python脚本看起来像:

import tabula

file_path = "address.pdf"
tables = tabula.read_pdf(file_path, pages="all", multiple_tables=True)

full_range_index = 0
full_range = []

starting_range_index = 2
starting_range = []

ending_range_index = 3
ending_range = []

table_one_row_count = 27
table_two_row_count = 6

# for i in range(table_one_row_count):
#     extracted_row = tables[0].iloc[i].values.tolist()

#     full_range.append(extracted_row[full_range_index])
#     starting_range.append(extracted_row[starting_range_index])
#     ending_range.append(extracted_row[ending_range_index])

for i in range(table_two_row_count):
    extracted_row = tables[1].iloc[i].values.tolist()

    full_range.append(extracted_row[full_range_index])
    starting_range.append(extracted_row[starting_range_index])
    ending_range.append(extracted_row[ending_range_index])

print(full_range)

full_range的一个示例是['one', 'two', 'three', 'four', 'five', 'six'],但它看起来像[nan, 'two', 'three', 'four', 'five', 'six']
有没有什么我可以做的,以不失去第二页/表的第一行?

bnlyeluc

bnlyeluc1#

我认为你的问题是因为第二页的表头被Tabula误认为是数据让我们尝试一个解决方案,用pandas来忽略头。

import tabula

file_path = "address.pdf"
tables = tabula.read_pdf(file_path, pages="all", multiple_tables=True, pandas_options={'header': None})

full_range_index = 0
full_range = []

starting_range_index = 2
starting_range = []

ending_range_index = 3
ending_range = []

table_one_row_count = 27
table_two_row_count = 6

for table in tables:
    for i in range(len(table)):
        extracted_row = table.iloc[i].values.tolist()

        full_range.append(extracted_row[full_range_index])
        starting_range.append(extracted_row[starting_range_index])
        ending_range.append(extracted_row[ending_range_index])

print(full_range)

相关问题