基于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 远程统计文件代码分享
May 14 Python
Python实现八大排序算法
Aug 13 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
简单实现python聊天程序
Apr 01 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
python日志logging模块使用方法分析
May 23 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
Python pandas用法最全整理
Aug 04 Python
python与idea的集成的实现
Nov 20 Python
matplotlib交互式数据光标实现(mplcursors)
Jan 13 Python
解决Python字典查找报Keyerror的问题
May 26 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日历制作代码分享
2014/01/20 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
javascript+html5+css3自定义提示窗口
2017/06/21 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
python监控nginx端口和进程状态
2019/09/06 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
介绍一下write命令
2012/09/24 面试题
教师专业理论水平的自我评价分享
2013/11/09 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
高中生学习计划书
2014/09/15 职场文书
先进党组织事迹材料
2014/12/26 职场文书
入党积极分子考察意见
2015/06/02 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python