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

python提取word文档内容的示例

一、微软Word历史、背景:

Word 的特异功能就是把那些应该写成简单的 TXT 或 PDF 格式的文件,变成了既大又慢且难以打开的怪兽,它们经常在系统切换和版本切换中出现格式不兼容,而且因为某些原因在文件内容已经定稿后仍处于可编辑的状态。Word 文件从未打算让人频繁传递。不过它们在一些网站上很流行,包括重要的文档、信息,甚至图表和多媒体;总之,那些内容都应该用 HTML代替。

大约在 2008 年以前,微软 Office 产品中 Word 用 .doc 文件格式。这种二进制格式很难读
取,而且能够读取 word 格式的软件很少。

为了跟上时代,让自己的软件能够符合主流软件的标准,微软决定使用 Open Office 的类 XML 格式标准,此后新版 Word 文件才与其他文字处理软件兼容,这个格式就是 .docx。

Python 对 这 种Open Office 和 Microsoft Office 都 在 使 用 的 .docx 格式 的 支 持 还 不 够 好。 虽 然 有 一 个 python-docx 库,但是只支持创建新文档和读取一些基本的文件数据,如文件大小和文件标题,不支持正文读取。

想读取 Microsoft Office 文件的正文内容,我们需要自己动手找方法。

二、从文件读取XML:

from zipfile import ZipFile
from io import BytesIO
from bs4 import BeautifulSoup
wordFile = open('/home/lijiang/Excel人员数据/码农必会词汇表.docx', 'rb').read()
wordFile = BytesIO(wordFile)
document = ZipFile(wordFile)
xml_content = document.read('word/document.xml')
print(xml_content.decode('utf-8'))

这段代码将Word文档读成二进制文件对象,再用标准库zipfile解压,再读取这个解压文件,这样就成为XML格式了。运行的输出结果包含了大量信息,但是被隐藏在XML格式里面。观察后会看到文档的正文内容都包含在<w:t>标签里面。这样就容易处理了。

三、用BeautifulSoup处理正文内容的XML标签:

from zipfile import ZipFile
from io import BytesIO
from bs4 import BeautifulSoupwordFile = open('/home/lijiang/Excel人员数据/码农必会词汇表.docx', 'rb').read()
wordFile = BytesIO(wordFile)
document = ZipFile(wordFile)
xml_content = document.read('word/document.xml')wordObj = BeautifulSoup(xml_content.decode('utf-8'), features="lxml")
textStr = wordObj.findAll('w:t')for textElem in textStr:
print(textElem.text)

为了以XML格式解析这个文档,需要在BeautifulSoup构造方法中指定关键字参数features='lxml'。word对象的findAll方法将带标签<w:t>的正文内容返回了一个列表。遍历此列表时,引用列表元素textElem的text属性,就去除了所有七七八八的标签,只剩下纯粹的正文内容了。也可以看到word是如何对文字进行断行处理的。

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

相关文章:

  • MarkDown快速入门-以Obsidian编辑器为例
  • 【计算机网络】协议,电路交换,分组交换
  • 加速应用开发:低代码云SaaS和源码交付模式如何选
  • ATT汇编
  • java split 拆分字符串
  • 【InternLM 大模型实战】作业与笔记汇总
  • 解析PreMaint在石油化工设备预测性维护领域的卓越表现
  • C++面试宝典第25题:阶乘末尾零的个数
  • PCIE 4.0 Equalizaiton(LTSSM 均衡流程)
  • [libwebsockets]lighttpd+libwebsockets支持ws和wss配置方法说明
  • 常用软件安装
  • 翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三
  • Qt QPlainTextEdit高亮显示当前行
  • Linux编辑器vim(含vim的配置)
  • Oracle DG环境下的秘钥管理
  • 【Sql Server】新手一分钟看懂在已有表基础上增加字段和说明
  • 亚信安慧AntDB打造开放创新的数据库生态
  • 在Mixamo网站上,下载的动画导入unity给自己的模型添加后出错怎么解决
  • java servlet运输公司管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • React中antd的使用技巧
  • 2024年第一篇博客
  • Nginx负载均衡下的webshell连接
  • JAVA编程语言单词汇总
  • 微信小程序(十七)自定义组件生命周期(根据状态栏自适配)
  • 百度搜索智能精选是什么东西、怎么加入?
  • 小程序开发平台:全功能小程序商城功能 带完整的安装代码包以及搭建教程
  • Vue3生命周期 VS Vue2生命周期(小记)
  • MYSQL基本查询(CURD:创建、读取、更新、删除)
  • 头歌C语言指针进阶
  • 民安智库-公共健身场所满意度调研