0

我正在使用 pdfplumber 从 pdf 中提取表格。但是使用的表格没有可见的垂直线分隔内容,因此提取的数据分为 3 行和 1 个巨大的列。

pdf 表格的示例屏幕截图 - 灰色框是刚刚隐藏的文本

我希望上表有 13 行。

import pdfplumber
import pandas as pd
import numpy as np
with pdfplumber.open('test.pdf') as pdf:
    page = pdf.pages[0]
    tables = page.extract_tables()

print(tables)

从文档中我无法理解是否有可以应用的特定表格设置。我尝试了一些,但没有帮助。

4

2 回答 2

1

使用extract_tables()选项时请添加以下设置(这可能需要根据您的输入文件进行更改):

import pdfplumber
import pandas as pd
import numpy as np

with pdfplumber.open(r'document.pdf') as pdf:
    page = pdf.pages[0]    
    table = page.extract_table(table_settings={"vertical_strategy": "lines", 
                                               "horizontal_strategy": "text", 
                                               "snap_tolerance": 4,})
    
    df = pd.DataFrame(table, columns=table[0]).T

Morover,请阅读pdfplumber文档(提取表)部分,因为在您的输入文件中的代码中包含许多选项:

https://github.com/jsvine/pdfplumber#extracting-tables

于 2021-08-21T14:28:00.703 回答
0

您可以使用 pandas.DataFrame 自定义表格,而不是直接打印表格。

df = pd.DataFrame(tables[1:], columns=tables[0])
for column in df.columns.tolist():
    df[column] = df[column].str.replace(" ", "")

print(df)
于 2021-08-21T12:18:15.360 回答