当前位置: 首页 > news >正文

使用Python解析pdf、docx等格式文件。

针对不同类型的文件,需要采取特定的访问与解析策略来有效获取其中蕴含的知识。下面我们将介绍对于不同数据源数据的获取方式。

1 解析Docx文档

1.1 获取Docx文档中文本

from docx import Document
# pip install python-docx
# python-docx == 0.8.11
filename = 'xxx.docx'
doc = Document(filename)
for para in doc.paragraphs:print(para.text)

1.2 获取Docx文档中表格

from docx import Document
filename = r'sample.docx'
doc = Document(filename)
print(f"\n 便利文档中表格:")
print(f"\n 方法一:")
for table in doc.tables:row_count = len(table.rows)col_count = len(table.columns)for i in range(row_count):row = table.rows[i].cellsprint(f"row : {row}")
print(f"\n 方法二:")
for table in doc.tables:row_count = len(table.rows)col_count = len(table.columns)for i in range(row_count):for j in range(col_count):print(table.cell(i,j).text)

2 解析txt文件

2.1 读取富文本txt

  • read() —— 读取所有文本
with open('sample.txt','r+',encoding='utf-8') as f:data = f.read()print(data)
  • readline() —— 读取第一行的内容
with open('sample.txt','r+',encoding='utf-8') as f:data = f.readline()print(data)
  • readlines() —— 读取全部内容,以数列的形式返回结果
with open('sample.txt','r+',encoding='utf-8') as f:data = f.readlines()print(data)
with open('sample.txt','r+',encoding='utf-8') as f:for ann in f.readlines()ann = ann.strip('\n') # 去除文本中的换行符print(ann)
# 简单版本
for i in open(file='sample.txt',encoding='utf-8').readlines():ann = i.strip('\n')print(ann)

3 解析PDF

3.1 PDF解析神器——pdfplumber

3.1.1 安装
pip install pdfplumber
3.1.2 提取pdf中的纯文本
import pdfplumber
file_name = r'sample.pdf' # 需要解析的pdf文件
output_file = 'sample.txt' # pdf解析后的内容
with pdfplumber.open(file_name) as p:page_count = len(p.pages)for i in range(0,page_count):page = p.pages[i]text_data = page.extract_text()data = open(output_file,'a',encoding='utf-8')data.write(text_data)
3.1.3 提取pdf中的表格
import pdfplumber
from openpyxl import Workbook # 保存表格
file_name = r'sample.pdf'
output_file = 'sample.xlsx'
with pdfplumber.open(file_name) as pdf:page = pdf.pages[0]table = page.extract_table()workbook = Workbook()sheet = workbook.activefor row in table:sheet.append(row)workbook.save(filename=output_file)
  • extract_tables()方法——输出文档所有表格,返回一个嵌套列表。
#extract_tables()法
with pdfplumber.open(r'exm.pdf') as pdf:  # 打开pdfpage_one = pdf.pages[0]  page_one_table =page_one.extract_tables()  # 获取pdf第一页的所有表格数据for row in page_one_table:print('第一页的表格数据:', row)
  • extact_table()方法——不会返回文档的所有表格,仅返回行数最多的表格数据。如存在多个行数相等的表格,则默认输出顶部表格数据。表格的每一行都为一个单独的列表,列表中的元素即为原表格的各个单元格的数据。
# extract_table()法
with pdfplumber.open(r'exm.pdf') as pdf_info:  # 打开pdfpage_one = pdf_info.pages[0]  page_one_table = page_one.extract_table()for row in page_one_table:print(row)

http://www.lryc.cn/news/421494.html

相关文章:

  • Linux网络通信基础API
  • Python爬虫:下载4K壁纸
  • 2024年【北京市安全员-B证】新版试题及北京市安全员-B证免费试题
  • python爬取B站视频实验
  • 10步搞定Python爬虫从零到精通!
  • SpringMVC学习笔记---带你快速入门和复习
  • Linux系统编程 day09 线程同步
  • Vue快速入门(四)——Vue3及组合式API(一)
  • vue项目名修改、webstorm和idea创建的项目重命名、重构项目、修改项目名称
  • 【MySQL】数据库约束和多表查询
  • 抖店飞鸽客服自动回复软件开发教程与下载体验(.NET版)
  • 如何关闭redis的自动清理缓存,声明式事务(含有redis)如何解决,redis setnx锁的使用。
  • C#中抽象类的使用
  • 揭秘网络攻击:深入理解JavaScript中的跨站点请求伪造(CSRF)
  • 【项目实战】C++视频共享点播系统
  • Android逆向题解 攻防世界难度4- Android2.0
  • P4155 [SCOI2015] 计划
  • 今日(2024年8月12日)科技新闻
  • CP AUTOSAR标准之ECUStateManager(AUTOSAR_SWS_ECUStateManager)(更新中……)
  • Java中的中介者模式:解耦复杂系统的有效策略
  • transformer(李宏毅老师系列)
  • XCode15.4真机运行调试
  • Google Mock 和 Google Test编写单元测试入门(环境配置、简单执行)
  • shell外壳与Linux权限
  • 越混越好的项目经理做对了哪些事?现在知道还不晚
  • haproxy是什么?以及haproxy基础实验
  • 【向量数据库】向量数据库的构建和检索
  • Mysql基础篇之DQL语言
  • python async
  • 利用QT和FFmpeg实现一个简单的视频播放器