首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pdfplumber将表详细信息提取到行和列中

如何使用pdfplumber将表详细信息提取到行和列中
EN

Stack Overflow用户
提问于 2021-08-21 11:55:07
回答 2查看 986关注 0票数 0

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

我想把上面的表格排成13行。

代码语言:javascript
复制
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)

从文档中,我不能理解是否有特定的表设置可以应用。我试了一些,但没有用。

EN

回答 2

Stack Overflow用户

发布于 2021-08-21 14:28:01

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

代码语言:javascript
复制
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

此外,请阅读pdfplumber文档(提取表)部分,因为有许多选项可以包含在基于输入文件的代码中:

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

票数 1
EN

Stack Overflow用户

发布于 2021-08-21 12:18:15

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

代码语言:javascript
复制
df = pd.DataFrame(tables[1:], columns=tables[0])
for column in df.columns.tolist():
    df[column] = df[column].str.replace(" ", "")

print(df)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68872782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档