基于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实现方法
Nov 18 Python
python操作MySQL 模拟简单银行转账操作
Sep 27 Python
Python探索之ModelForm代码详解
Oct 26 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
Django实现全文检索的方法(支持中文)
May 14 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
python_opencv用线段画封闭矩形的实例
Dec 05 Python
使用python绘制温度变化雷达图
Oct 18 Python
python实现广度优先搜索过程解析
Oct 19 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
Python 实现数组相减示例
Dec 27 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 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
2006/12/23 PHP
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
JQUERY操作JSON实例代码
2010/02/09 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
js图片预加载示例
2014/04/30 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
Python装饰器使用实例:验证参数合法性
2015/06/24 Python
python如何实现一个刷网页小程序
2018/11/27 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
python实现高斯投影正反算方式
2020/01/17 Python
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
西部世纪.net笔试题面试题
2014/04/03 面试题
过滤器的用法
2013/10/08 面试题
高中军训感想800字
2014/02/23 职场文书
上海世博会口号
2014/06/19 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
合作经营协议书范本
2014/09/16 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
python 中的jieba分词库
2021/11/23 Python
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server