加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

python如何提取pdf表格?详解三种表格类型提取方式

发布时间:2022-04-07 15:38:34 所属栏目:语言 来源:互联网
导读:我们经常会需要从FPDF中提前信息,例如文本,表格等等,对于比价少的内容,我们一般会使用复制粘贴解决,但是内容很多时候怎样提取呢?下面给就分享使用python提取pdf表格的方法,小编觉得是比价实用的,感兴趣的朋友就一起来看看吧。 通常PDF里的表格分为图
        我们经常会需要从FPDF中提前信息,例如文本,表格等等,对于比价少的内容,我们一般会使用复制粘贴解决,但是内容很多时候怎样提取呢?下面给就分享使用python提取pdf表格的方法,小编觉得是比价实用的,感兴趣的朋友就一起来看看吧。
 
        通常PDF里的表格分为图片型和文本型。文本型又分简单型和复杂型。本文就针对这三部分举例讲解。
 
提取简单型表格
提取较为复杂型表格
提取图片型表格
 
        可以看到,该页只有一个表格,下面我们将这个表写入Excel中,先上代码
 
import pdfplumber as pr
import pandas as pd
pdf = pr.open('关于使用自有资金购买银行理财产品的进展公告.PDF')
ps = pdf.pages
pg = ps[3]
tables = pg.extract_tables()
table = tables[0]
print(table)
df = pd.DataFrame(table[1:],columns = table[0])
for i in range(len(table)):
    for j in range(len(table[i])):
        table[i][j] = table[i][j].replace('n','')
df1 = pd.DataFrame(table[1:],columns = table[0])
df1.to_excel('page2.xlsx')
        得到的结果如下:
 
 
 
        通过与PDF上原表格对比,在内容上是完全一致的,唯一不同的是由于主营业务内容较多,导致显示的不全面,现在来说说这段代码。
 
        首先导入要用到的两个库。在pdfplumber中,open()函数是用来打开PDF文件,该代码用的是相对路径。.open().pages则是获取PDF的页数,打印ps值可以得到如下
 
 
 
        pg = ps[3]代表的就是我们所选的第三页。
 
        pg.extract_tables():可输出页面中所有表格,并返回一个嵌套列表,其结构层次为table→row→cell。此时,页面上的整个表格被放入一个大列表中,原表格中的各行组成该大列表中的各个子列表。若需输出单个外层列表元素,得到的便是由原表格同一行元素构成的列表。
 
        与其类似的是pg.extract_table( ):返回多个独立列表,其结构层次为row→cell。若页面中存在多个行数相同的表格,则默认输出顶部表格;否则,仅输出行数最多的一个表格。此时,表格的每一行都作为一个单独的列表,列表中每个元素即为原表格的各个单元格内容。
 
        由于该页面中只有一个表格,我们需要tables集合中的第一个元素。打印table值,如下:
 
 
 
        可以看到在上述中是存在n这种没不要的字符,它的作用其实是换行但我们在Excel中是不需要的。所以需要剔除它,用代码中的for循环与replace函数将控制替换成空格(即删除n)。观察table是一个装有2个元素的列表。
 
        最后df1 = pd.DataFrame(table[1:],columns = table[0])这段代码的作用就是创建一个数据框,将内容放到对应的行列中。
 
        本代码只是简单将数据存入到Excel,如果你需要进一步对样式进行调整,可以使用openpyxl等模块进行修改。

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读