基于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 相关文章推荐
Linux环境下MySQL-python安装过程分享
Feb 02 Python
在Python的列表中利用remove()方法删除元素的教程
May 21 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
python如何制作缩略图
Apr 30 Python
Django密码系统实现过程详解
Jul 19 Python
django 快速启动数据库客户端程序的方法示例
Aug 16 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
python3将变量输入的简单实例
Aug 19 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
python实现三次密码验证的示例
Apr 29 Python
Django对接elasticsearch实现全文检索的示例代码
Aug 02 Python
Python读写yaml文件
Mar 20 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
第十一节 重载 [11]
2006/10/09 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
php随机生成数字字母组合的方法
2015/03/18 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
php解决安全问题的方法实例
2019/09/19 PHP
JavaScript OOP类与继承
2009/11/15 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
详解Document.Cookie
2015/12/25 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
详解Node全局变量global模块
2017/09/28 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
详解python中的json和字典dict
2018/06/22 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
python实现Virginia无密钥解密
2019/03/20 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
python excel和yaml文件的读取封装
2021/01/12 Python
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
法人委托书范本
2014/04/04 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
2014年医院工作总结
2014/11/20 职场文书
2014年学校办公室工作总结
2014/12/19 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL