基于Python快速处理PDF表格数据
作者:其实还好啦 发布时间:2021-04-11 23:29:54
我们有下面一张PDF格式存储的表格,现在需要使用Python将它提取出来。
使用Python提取表格数据需要使用pdfplumber模块,打开CMD,安装代码如下:
pip install pdfplumber
安装完之后,将需要使用的模块导入
import pdfplumberimport pandas as pd
然后打开PDF文件
# 使用with语句打开pdf文件
with pdfplumber.open("D:\\python\\cai\\yq.pdf") as pdf:
# pages[0]表示取第1页
page = pdf.pages[0]
我们来打印输出下获取到的文本,这句语句只是帮我们验证下是否成功获取到PDF里的内容
print(page.extract_text())
执行的结果如下,看来是成功了
然后可以使用extract_table()函数获取表格,如果有多个表格,可以使用extract_tables()函数,就是多了个s
d1=page.extract_table()
执行代码后,将得到一个列表,还不是数据框
所以最后一步就是将列表转为数据框就可以了,代码如下:
df = pd.DataFrame(d1[1:], columns=d1[0])
执行代码后,将得到了df数据框
有几个注意事项要提醒下:
1.pdf表格中的数据,对于同一个数据或内容,不要有换行,如果换行,可能被识别为2个数据;
2.pdf中的表格一定要有边框,没有边框的话,否则使用extract_table()函数就无法获取表格数据,extract_text()还是可以获取文本信息的,不要问我是怎么知道的,说多了都是泪。
我们现在有一份PDF数据,里面有三页,每页都有一样数据结构但数据不同的数据表,现在需要使用Python将它批量提取出来。
有了上回经验,我们就直接上代码:
import pdfplumber
import pandas as pd
# 创建一个空数据框
df = pd.DataFrame()
# 使用with语句打开pdf文件
with pdfplumber.open("D:\\python\\cai\\5.pdf") as pdf:
# 使用for循环遍历每个pages
for page in pdf.pages:
# 取出当前页表格,结果为列表
d=page.extract_table()
# 将列表转为数据框
df1 = pd.DataFrame(d[1:], columns=d[0])
#添加至df数据框中
df = df.append(df1)
执行代码后,将得到了df数据框
是不是so easy 呢?
来源:https://www.cnblogs.com/python0921/p/12965135.html


猜你喜欢
- 本来想着做一个将图片识别为文字的小功能,本想到Google上面第一页全是各种收费平台的广告。这些平台提供的基本都是让我们通过调用相关的三方接
- 本文实例讲述了Python实现获取本地及远程图片大小的方法。分享给大家供大家参考,具体如下:了解过Pillow的都知道,Pillow是一个非
- 在学校修管理学的时候,有讲过一个管理激励的理论。管理激励是基于行为和认知科学的研究,来发现人们的需要、动机、目标和行为四者之间关系的核心理论
- 一、简介eval()函数用来执行一个字符表达式的值,并返回表达式的值二、语法具体语法:eval(expression[, globals[,
- 迭代dict的key和value我们了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和va
- 如下所示:>>> import pandas as pd>>> import numpy as np&g
- 前言得益于 Vite 卓越的前端开发体验,越来越多的 Electron 项目也开始应用它来构建开发。翻阅各种社区资源可以发现很多基于 Vit
- 本文实例为大家分享了JS中FormData类实现文件上传的具体代码,供大家参考,具体内容如下上篇文章讲到了FormReader类实现文件上传
- 译者按:原文写于2011年末,虽然文中关于Python 3的一些说法可以说已经不成立了,但是作为一篇面向从其他语言转型到Python的程序员
- MySQL 中,可以为某张表指定多个索引,但在语句具体执行时,选用哪个索引是由 MySQL 中执行器确定的。那么执行器选择索引的原则是什么,
- 【摘 要】 我只是提供我几个我认为有助于提高写高性能的asp.net应用程序的技巧,本文提到的提高asp.net性能的技巧只是一个起步,更多
- 本文实例讲述了javascript实现多栏闭合展开式广告位菜单效果。分享给大家供大家参考。具体如下:从操作方式上来说,有似曾相识的感觉,有点
- 近期,有小伙伴问我关于怎么使用python进行散点图的绘制,这个东西很简单,但是怎么讲相关性的值标注在图形上略显麻烦,因此,在这里记录一下,
- 一、两表之间若有关联,你是否还在用主键进行关联? 比如现在有2张表,一张新闻栏目表,一张新闻表,现在两张表需要进行关联,我想大多数人的做法肯
- 本文实例讲述了Python实现多条件筛选目标数据功能。分享给大家供大家参考,具体如下:python中提供了一些数据过滤功能,可以使用内建函数
- 本文实例讲述了Yii配置与使用memcached缓存的方法。分享给大家供大家参考,具体如下:1. 下载memcached软件包,解压,把me
- 使用场景已搭建了PyPI私有库,上传公共库包含静态文件,如需要使用sql静态文件初始化数据库。打包python包,给其他人使用,但项目中包含
- 前言实现类似SQL的join操作,通过pd.merge()方法可以自由灵活地操作各种逻辑的数据连接、合并等操作可以将两个DataFrame或
- 这段时间,关于asp的前途,关于asp的好坏的讨论贴,都有好些了。当然,大家的心都是好的,但是一些朋友说的话,真是让人郁闷。个人觉得,在现在
- Python 多进程和数据传递的理解python不仅线程用的是系统原生线程,进程也是用的原生进程进程的用法和线程大同小异import mul