基于Python快速处理PDF表格数据


Posted in Python onJune 03, 2020

我们有下面一张PDF格式存储的表格,现在需要使用Python将它提取出来。

基于Python快速处理PDF表格数据

使用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())

执行的结果如下,看来是成功了

基于Python快速处理PDF表格数据

然后可以使用extract_table()函数获取表格,如果有多个表格,可以使用extract_tables()函数,就是多了个s

d1=page.extract_table()

执行代码后,将得到一个列表,还不是数据框

基于Python快速处理PDF表格数据

所以最后一步就是将列表转为数据框就可以了,代码如下:

df = pd.DataFrame(d1[1:], columns=d1[0])

执行代码后,将得到了df数据框

基于Python快速处理PDF表格数据

有几个注意事项要提醒下:

1.pdf表格中的数据,对于同一个数据或内容,不要有换行,如果换行,可能被识别为2个数据;

2.pdf中的表格一定要有边框,没有边框的话,否则使用extract_table()函数就无法获取表格数据,extract_text()还是可以获取文本信息的,不要问我是怎么知道的,说多了都是泪。

我们现在有一份PDF数据,里面有三页,每页都有一样数据结构但数据不同的数据表,现在需要使用Python将它批量提取出来。

基于Python快速处理PDF表格数据

基于Python快速处理PDF表格数据

基于Python快速处理PDF表格数据

有了上回经验,我们就直接上代码:

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数据框

基于Python快速处理PDF表格数据

是不是so easy 呢?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python利用datetime模块计算时间差
Aug 04 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
python 动态加载的实现方法
Dec 22 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
Python如何获得百度统计API的数据并发送邮件示例代码
Jan 27 Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 Python
python mysql断开重连的实现方法
Jul 26 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
Oct 30 Python
python爬虫容易学吗
Jun 02 Python
Python 解析库json及jsonpath pickle的实现
Aug 17 Python
彻底解决pip下载pytorch慢的问题方法
Mar 01 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 #Python
Python3创建Django项目的几种方法(3种)
Jun 03 #Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 #Python
使用python实现时间序列白噪声检验方式
Jun 03 #Python
部署Django到阿里云服务器教程示例
Jun 03 #Python
Python flask路由间传递变量实例详解
Jun 03 #Python
django的autoreload机制实现
Jun 03 #Python
You might like
十天学会php之第七天
2006/10/09 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
php实现多城市切换特效
2015/08/09 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
JS中的多态实例详解
2017/10/15 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
python简单实现基数排序算法
2015/05/16 Python
Python实现Kmeans聚类算法
2020/06/10 Python
Python高级用法总结
2018/05/26 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
python SVM 线性分类模型的实现
2019/07/19 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
工作岗位说明书模板
2014/05/09 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
冰峪沟导游词
2015/02/09 职场文书
售票员岗位职责
2015/02/15 职场文书
花木兰观后感
2015/06/10 职场文书
vue中 this.$set的使用详解
2021/11/17 Vue.js
使用Python获取字典键对应值的方法
2022/04/26 Python