基于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实现下载网易云音乐的高清MV
Mar 16 Python
Python生成随机验证码的两种方法
Dec 22 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
python实现局域网内实时通信代码
Dec 22 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
解决python3输入的坑——input()
Dec 05 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 Python
python FTP编程基础入门
Feb 27 Python
golang特有程序结构入门教程
Jun 02 Python
Python实现简单得递归下降Parser
May 02 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学习教程之第1天
2008/06/15 PHP
分享PHP header函数使用教程
2013/09/05 PHP
PHP中的session安全吗?
2016/01/22 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
2016/05/17 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
python3下载抖音视频的完整代码
2019/06/05 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
python绘制汉诺塔
2021/03/01 Python
美国社交购物市场:MassGenie
2019/02/18 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
Java工程师面试集锦之Spring框架
2013/06/16 面试题
你所在的项目是如何确定版本号的
2015/12/28 面试题
仓管员岗位责任制
2014/02/19 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
基于Python实现流星雨效果的绘制
2022/03/18 Python
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers