基于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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
Python画柱状统计图操作示例【基于matplotlib库】
Jul 04 Python
谈谈Python中的while循环语句
Mar 10 Python
使用python制作一个解压缩软件
Nov 13 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
基于python实现坦克大战游戏
Oct 27 Python
python解析照片拍摄时间进行图片整理
Jul 23 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简单实现文件或图片强制下载的方法
2016/12/06 PHP
js确定对象类型方法
2012/03/30 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
微信小程序实现分页加载效果
2020/11/19 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
python3中int(整型)的使用教程
2017/03/23 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
python实现倒计时小工具
2019/07/29 Python
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
高中军训第一天感言
2014/03/06 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
入党积极分子个人总结
2015/03/02 职场文书
个人廉洁自律总结
2015/03/06 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
《包身工》教学反思
2016/02/23 职场文书
Python re.sub 反向引用的实现
2021/07/07 Python
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python
redis 解决库存并发问题实现数量控制
2022/04/08 Redis