基于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抓取模板之家的CSS模板
Mar 16 Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
把pandas转换int型为str型的方法
Jan 29 Python
详解Python3 基本数据类型
Apr 19 Python
Python单元测试模块doctest的具体使用
Feb 10 Python
使用sklearn对多分类的每个类别进行指标评价操作
Jun 11 Python
python2和python3哪个使用率高
Jun 23 Python
python spilt()分隔字符串的实现示例
May 21 Python
python 中的@运算符使用
May 26 Python
python使用pymysql模块操作MySQL
Jun 16 Python
Python常遇到的错误和异常
Nov 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经典面试题之设计模式(经常遇到)
2015/10/15 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
单链表反转python实现代码示例
2018/02/08 Python
wxPython实现窗口用图片做背景
2018/04/25 Python
pytorch 数据集图片显示方法
2018/07/26 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
python异步实现定时任务和周期任务的方法
2019/06/29 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
仓库门卫岗位职责
2013/12/22 职场文书
安全资金保障制度
2014/01/23 职场文书
教师个人剖析材料
2014/02/05 职场文书
2014年公务员工作总结
2014/11/18 职场文书
学校教学工作总结2015
2015/05/19 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL
python神经网络Xception模型
2022/05/06 Python