基于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的Django框架中settings文件的部署建议
May 30 Python
python实现线程池的方法
Jun 30 Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
python计算两个地址之间的距离方法
Jun 09 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
python 字典操作提取key,value的方法
Jun 26 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
Python Lambda函数使用总结详解
Dec 11 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
Python 循环读取数据内存不足的解决方案
May 25 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
php explode函数实例代码
2012/02/27 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
2014/05/08 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
前端性能优化及技巧
2016/05/06 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
Python实现包含min函数的栈
2016/04/29 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
python获取本机所有IP地址的方法
2018/12/26 Python
详解用python生成随机数的几种方法
2019/08/04 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
500行python代码实现飞机大战
2020/04/24 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
电子商务应届生自我鉴定
2014/01/13 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
四下基层实施方案
2014/03/28 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
毕业生找工作求职信
2014/08/05 职场文书
社区党员公开承诺书
2014/08/30 职场文书
中职招生先进个人材料
2014/08/31 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
银行员工考核评语
2014/12/31 职场文书
金砖之国观后感
2015/06/11 职场文书
Python Pandas解析读写 CSV 文件
2022/04/11 Python