基于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基于Tkinter库实现简单文本编辑器实例
May 05 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
Python求解任意闭区间的所有素数
Jun 10 Python
Python中Proxypool库的安装与配置
Oct 19 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
Python小进度条显示代码
Mar 05 Python
python 为什么说eval要慎用
Mar 26 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
Python处理PDF与CDF实例
Feb 26 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
php生成随机数或者字符串的代码
2008/09/05 PHP
php中使用临时表查询数据的一个例子
2013/02/03 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
python 获取et和excel的版本号
2009/04/09 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
python仿抖音表白神器
2019/04/08 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
优良学风班申请材料
2014/02/13 职场文书
婚礼领导致辞大全
2015/07/28 职场文书