基于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实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
itchat接口使用示例
Oct 23 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
python实现名片管理器的示例代码
Dec 17 Python
python使用turtle库绘制奥运五环
Feb 24 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 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 curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
浅析php数据类型转换
2014/01/09 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
JQuery autocomplete 使用手册
2010/04/01 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
js读取配置文件自写
2014/02/11 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
JavaScript实现图片切换效果
2017/08/12 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
python开头的coding设置方法
2019/08/08 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
毕业自我鉴定总结
2014/03/24 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
python之django路由和视图案例教程
2021/07/26 Python
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技
什么是css原子化,有什么用?
2022/04/24 HTML / CSS