基于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中OrderedDict的使用方法详解
May 05 Python
利用标准库fractions模块让Python支持分数类型的方法详解
Aug 11 Python
Python File readlines() 使用方法
Mar 19 Python
在Python中增加和插入元素的示例
Nov 01 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
python3+selenium自动化测试框架详解
Mar 17 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
Python爬虫学习之翻译小程序
Jul 30 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 Python
Pandas-DataFrame知识点汇总
Mar 16 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/10/09 PHP
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
PHP中iconv函数知识汇总
2015/07/02 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
2016/08/03 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
JS中的phototype详解
2017/02/04 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
大学生职业生涯规划书模板
2014/01/03 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
个人借款协议书范本
2014/11/17 职场文书
学校百日安全活动总结
2015/05/07 职场文书
校友会致辞
2015/07/30 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技
Python sklearn分类决策树方法详解
2022/09/23 Python