活动地址:CSDN21天学习挑战赛

目录

  • 一、Python操作PDF的库有很多
  • 二、pdflumber作为案例讲解使用
    • 2、安装配置
    • 2、加载PDF
    • 3、读取pdf文档信息
      • 1)读取pdf文档信息
      • 2)打印pdf文档总页码
    • 4、pdfplumber.page类
      • 1)读取pdf的数据(第一页)
      • 2)读取第一页数据
      • 3)将数据写入到Excel表中
      • 4)读取完整pdf文档写入到Excel中
      • 5)多pdf文本写入到Excel表中

一、Python操作PDF的库有很多

  • 几大库对比图

二、pdflumber作为案例讲解使用

pdfplumber及其依赖pdfminer.six专注PDF内容提取,例如文本(位置、字体及颜色等)和形状(矩形、直线、曲线),前者还有解析表格的功能。

​## 1、优缺点

  • 优点:

对于文字的解析非常优秀,没有发现错字漏字的情况
对于普通表格的解析也很棒

  • 缺点:

对于表格分页的情况处理很弱
合并单元格的表格解析会不够理想,但是效果还是要比tabula好。

2、安装配置

pip install pdfplumber

结果:

2、加载PDF

  • pdf样式:

    资源下载地址(0积分下载):https://download.csdn.net/download/walykyy/86398438
  • 读取pdf文档
import pdfplumber# 读取pdf文件
with pdfplumber.open('data.pdf') as pdf:print(pdf)# 打印pdf类型print(type(pdf))

3、读取pdf文档信息

1)读取pdf文档信息

属性 描述
.metadata 从PDF的Info中获取元数据键 /值对字典。 通常包括“ CreationDate”,“ ModDate”,“ Producer”等。
.pages 一个包含pdfplumber.Page实例的列表,每一个实例代表PDF每一页的信息。
import pdfplumber# 读取pdf文件
with pdfplumber.open('data.pdf') as pdf:#读取文档信息print(pdf.metadata)

结果:

{'Author': 'Tian', 'CreationDate': "D:20220811142408+08'00'", 'ModDate': "D:20220811142408+08'00'", 'Producer': 'Microsoft® Excel® 2016', 'Creator': 'Microsoft® Excel® 2016'}

2)打印pdf文档总页码

属性 说明
.metadata 元祖的形式获取pdf文档的相关信息
.pages 获取pdf的页码

import pdfplumber# 读取pdf文件
with pdfplumber.open('data.pdf') as pdf:#读取文档总页码print(len(pdf.pages))

4、pdfplumber.page类

是pdfplumber的核心

属性 描述
.page_number 页码顺序,从第一页的1开始,第二页为2,依此类推
.width 页面宽度
.heigh 页面高度
.objects,.chars,.lines,.rects,.curves,.figures,.images 这些属性中的每一个都是一个列表,并且每个列表针对嵌入面上的每个此类对象包含一个字典。 有关更多详细信息,请参见下面的"对象(Object)"
  • 常用方法
方法名 说明
.crop(bounding_box) 返回裁剪后的页面,该bouding_box(边界框)应表示为具有值(x0, top, x1, bottom)的4元组。 裁剪后的页面保留了至少部分位于边界框内的对象。 如果对象仅部分落在该框内,则也会被涵盖。
.within_bbox(bounding_box) 和.crop相似,但是只会包含完全在bounding_box内的部分。
.filter(test_function) 返回仅包含.objects的页面版本,该对象的test_function(obj)返回True。
.extract_text(x_tolerance=0, y_tolerance=0) 将页面的所有字符对象整理到一个字符串中。若其中一个字符的x1与下一个字符的x0之差大于x_tolerance,则添加空格。若其中一个字符的doctop与下一个字符的doctop之差大于y_tolerance,则添加换行符。
.extract_words(x_tolerance=0, y_tolerance=0, horizontal_ltr=True, vertical_ttb=True) 返回所有单词外观及其边界框的列表。字词被认为是字符序列,其中(对于“直立”字符)一个字符的x1和下一个字符的x0之差小于或等于x_tolerance,并且一个字符的doctop和下一个字符的doctop小于或等于y_tolerance。对于非垂直字符也采用类似的方法,但是要测量它们之间的垂直距离,而不是水平距离。参数horizontal_ltr和vertical_ttb指示是否应从左到右(对于水平单词)从上到下(对于垂直单词)读取字词。
.extract_tables(table_settings) 从页面中提取表格数据。
.to_image(**conversion_kwargs) 返回PageImage类的实例。

1)读取pdf的数据(第一页)

import pdfplumber# 读取pdf文件
with pdfplumber.open('data.pdf') as pdf:# 读取文档总页码page = pdf.pages[0]print("第一页页码: ", page.page_number)print("第一页页宽: ", page.width)print("第一页页高: ", page.height)

2)读取第一页数据

3)将数据写入到Excel表中

import pdfplumber
import xlwt# 读取pdf文件
with pdfplumber.open('data.pdf') as pdf:# 读取文档总页码page = pdf.pages[0]# 读取表格数据table = page.extract_table()# 创建Excel文本work_book = xlwt.Workbook(encoding='utf-8')# 新建sheet表格work_sheet = work_book.add_sheet('sheet1')# 定义列名col = table[0]#将col写入到表单第一行,['省市', '地市', '用电类别', '当期值']for i in range(0, len(col)):work_sheet.write(0, i, col[i])#将数据写入到sheet表中for i in range(0, len(table[1:])):data = table[1:][i]for j in range(0, len(col)):work_sheet.write(i + 1, j, data[j])#保存work_book.save('test2.xls')

结果:

4)读取完整pdf文档写入到Excel中

import pdfplumber
import xlwt# 读取pdf文件
with pdfplumber.open('data.pdf') as pdf:# 读取文档总页码pages = pdf.pages# 定义一个数组item = []for page in pages:# 读取表格数据table = page.extract_table()for i in table:item.append(i)# 创建Excel文本work_book = xlwt.Workbook(encoding='utf-8')# 新建sheet表格work_sheet = work_book.add_sheet('sheet1')# 定义列名col = item[0]# 将col写入到表单第一行,['省市', '地市', '用电类别', '当期值']for i in range(0, len(col)):work_sheet.write(0, i, col[i])# 将数据写入到sheet表中for i in range(0, len(item[1:])):data = item[1:][i]for j in range(0, len(col)):work_sheet.write(i + 1, j, data[j])# 保存work_book.save('test2.xls')

5)多pdf文本写入到Excel表中

import pdfplumber
import xlwt
import os# 读取文件夹路径
file_dir = r'D:\pythonproject\file'
file_list = []
# 循环读取路径pdf文件
for files in os.walk(file_dir):# print(files) ('D:\\pythonproject\\file', [], ['1.pdf', '2.pdf', '3.pdf'])for file in files[2]:# 对文件名切割,以.作为切割符;拼接地址存入file_list中if file.split('.')[1] == 'pdf' or file.split('.')[1] == 'PDF':file_list.append(file_dir + '\\' + file)# 定义一个临时表存放数据
item = []
# 读取pdf文件
for file_page in file_list:with pdfplumber.open(file_page) as pdf:for page in pdf.pages:for i in page.extract_table():item.append(i)# 创建Excel文本
work_book = xlwt.Workbook(encoding='utf-8')
# 新建sheet表格
work_sheet = work_book.add_sheet('sheet1')
# 定义列名
col = item[0]
# 将col写入到表单第一行,['省市', '地市', '用电类别', '当期值']
for i in range(0, len(col)):work_sheet.write(0, i, col[i])
# 将数据写入到sheet表中
for i in range(0, len(item[1:])):data = item[1:][i]for j in range(0, len(col)):work_sheet.write(i + 1, j, data[j])
# 保存
work_book.save('test3.xls')

注意:pdf文档转换的时候一定要弄好,Excel转pdf时候转换成功,但是里面有乱码导致一直读不出来报错,搞了好久

Python 读pdf数据写入Excel表中相关推荐

  1. python实现将数据写入Excel文件中

    将数据写入Excel文件中,用python实现起来非常的简单,下面一步步地教大家. 一.导入excel表格文件处理函数 import xlwt 注意,这里的xlwt是python的第三方模块,需要下载 ...

  2. python如何把数据写入excel表格中指定列

    Python可以使用openpyxl库来将数据写入Excel表格中指定的列.如果要将数据写入指定的列中,可以使用如下代码:worksheet.write(row_index, column_index ...

  3. 如何用python将数据写入Excel文件中

    如何用python将数据写入Excel文件中 将数据写入Excel文件中,用python实现起来非常的简单,下面一步步地教大家. 一.导入excel表格文件处理函数 import xlwt 注意,这里 ...

  4. 按照下面的页面做一个用户注册的Sevlet,要求自己设计表,并将表单的数据写入到表中。

    按照下面的页面做一个用户注册的Sevlet,要求自己设计表,并将表单的数据写入到表中. 表单代码如下:(register.html) <!DOCTYPE html> <html la ...

  5. Python读取数据库数据写入Excel

    Python读取数据库数据写入Excel 本文示例: 读取数据库数据 创建Excel文件,并创建指定名称的sheet页 将数据库数据写入创建的sheet页中 保存文件 示例代码: # -*- codi ...

  6. Python将txt数据写入excel

    按属性匹配想要的数据 每个txt文件在Excel中为一行 # -*- coding: utf-8 -*- import os import openpyxl from openpyxl import ...

  7. 【Python自动化办公】实现excel表中的数据批量导入到word指定位置(表格形式和下滑线形式)

    文章目录 案例1--word模板为表格 案例2--word模板中带有下划线形式 python docx基本操作 回到需求 案例1--word模板为表格 目的就是把excel中的数据,填入word模板中 ...

  8. python按某列拆分excel表格_利用Python+Pandas实现从一个excel表中提取列形成新表

    简要 利用python实现把一个工作表中的某些列,和其中单独的一列,提取成为一个个新表. 如图(处理前)蓝色部分是需要保留的列,红色是需要一项一项分出来作为单独表格的列. 其中,第一行的名字是用的回车 ...

  9. Python将数据写入excel表格中保存

    python读取excel可以参考:<python快速读取excel> 这里用到的库是openpyxl,比较方便好用.直接pip install openpyxl就可以完成安装. 先看一个 ...

最新文章

  1. 【linux排错】error while loading shared libraries: xxx.so.x 错误的原因和解决办法
  2. python十个运维实战项目_干货 | 这4个Python实战项目,让你瞬间读懂Python!
  3. Java中Gamma、Beta等函数
  4. epoll和poll的C++11多线程练习
  5. Protobuf3详细介绍
  6. 系统集成项目管理工程师(软考中级)知识点总结【挣值分析】【关键路径】
  7. xamarin怎么调用java的_Xamarin使用教程六:如何引用JAR档案
  8. 如何下载高清卫星地图
  9. matlab xticklabel 旋转,在Matlab中,如何实现xticklabel的旋转?转
  10. 如何在网易云音乐上正常听周杰伦的歌曲
  11. FillRect与FrameRect用法
  12. mysql 系统的健壮性_系统的健壮性和可恢复性
  13. rn react native PanResponder手势动画 实现窗口拖动 滑动动画 Animated
  14. Modularity and community structure in networks
  15. 删除只读属性的文件夹及其子文件
  16. mtk flash配置
  17. android 加固作用,Android 应用安全 - 应用加固概念
  18. spry使用视频_Spry Fox如何利用Cloud Build
  19. 我是小交易所老板,我现在很慌
  20. mini2440 的 leds的驱动程序

热门文章

  1. 如何访问局域网内宿主机上的虚机服务
  2. 等式约束优化(可行点)
  3. 童年修复系列-PC Engine/TurboGrafx-16介绍及FPGA实现
  4. SE 的 ONNX 图
  5. 计算机毕业设计springboot+vue基本微信小程序的云宠物小程序-宠物领养
  6. 在EXCEL中VBA编程检验身份证号码有效性
  7. 打不死对方,就选择合作-Novell和微软共同建立互操实验室
  8. crazy的比较级最高级_形容词比较级和最高级more, most
  9. 论文阅读笔记 1.《Open Flow: Enabling Innovation in Campus Networks》(2022.12.22)
  10. uni-app的flex盒模型与布局进阶写法(高手勿进)