基于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 简易计算器程序,代码就几行
Aug 29 Python
python中黄金分割法实现方法
May 06 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
python和shell监控linux服务器的详细代码
Jun 22 Python
python中join()方法介绍
Oct 11 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
Python web如何在IIS发布应用过程解析
May 27 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
vscode调试django项目的方法
Aug 06 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 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 文件夹删除、php清除缓存程序
2009/08/25 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
PHP的自定义模板引擎
2017/03/24 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
angularjs实现猜大小功能
2017/10/23 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
js实现全选和全不选
2020/07/28 Javascript
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
python每天定时运行某程序代码
2019/08/16 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
销售高级职员求职信
2013/10/29 职场文书
区域总监的岗位职责
2013/11/21 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
2015年检察院个人工作总结
2015/05/20 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏