使用 Python 从 word 文档 (docx) 中提取数据

使用 Python 从 word 文档 (docx) 中提取数据

众所周知,python 如何在数据科学中创造奇迹。 . Python 在自动化 Microsoft Office 工具方面做得很好,这与许多人认为 .NET 和 VBA 是自动化 Microsoft 工具的唯一选择不同。

我最近一直依赖的两个用于文字自动化的库是 DOCX 和 PYWIN32。

FUN FACT- docx 中的 x 代表 xml,表示 docx 文件是一组 xml。对于任何给定的 docx 文件,将扩展名更改为 zip。探索这个 zip 文件并欣赏这个节目!!!

DOCX - 这个库利用了 docx 是一组 xml 的事实。一个 docx 文件由许多组件组成,例如段落、表格、图像、附件、链接,并且可能还有很多我还没有遇到过的组件。

  1. 段落:如果我们正在创建一个新文档并且想要编写一些文本,那么我们可以创建一个文档对象并使用我们喜欢的任何样式编写段落。这种方法在各种网站上广泛使用。但是如果我们想从另一个文档中复制一些文本,事情可能会非常棘手。在这种情况下,您需要保留原始文档中文本的样式和格式。在这里将原始文档中的段落组件按原样插入新文档将非常有帮助,因为这不仅会处理样式和格式,还会处理原始组件中的许多意想不到的文本,例如数学或物理公式等

2.表格:表格的写法也非常符合写段落的方式。如果有一个我们必须编写的新表,那么 docx 为它提供了很好的支持。如果我们必须复制表,那么方法取决于表的复杂性。如果表结构是直截了当的,那么其中一种方法是我们可以读取数据帧中的表并使用 docx 编写它。但是,如果表格很复杂(大多数情况下都是如此),则从原始文档的 xml 中获取表格组件并将其插入到新文档中。

3. 图片——如果我们想插入图片,那么 docx 也提供了很好的支持。 docx 库目前仅支持内联形状。因此,如果我们要复制的图像是内联的,那么就需要敲更多的门 😃 RELS 文件是我们许多问题的首选文件。但是我们如何获得这个 RELS 文件呢?探索 zip 文件,您将得到它。 Docx 让我们有机会使用这个 rels 文件。

  • 每个图像都附有一个“摆脱”。每个图像的 xml 中还存在“graphicData”。 RELS 提供图像名称和与之关联的 rid。加入这些点和 BOOM,您可以将图像复制到内联或非内联到您的文档中。
  • 但是在插入图像之前,我们必须确保将图像显式转换为 jpeg/jpg/png,即使图像是 jpg/jpeg/png 类型

4. Links- docx 又来救你了。因此,如果您正在创建一个新文档,那么生活会很容易,但如果您想复制,那么您将不得不探索这个 docx 的 xml 形式。探索文档的 xml 是必须的,它将对您有很大帮助。因此,如果您不想使用变通方法但想实现一些真正具体的东西,那么理解这个 docx 文件的 xml 非常非常重要。

  • 链接也与独特的“摆脱”相关联。 RELS 将提供超链接和与之关联的摆脱。正如我所说,加入点,你就有了解决方案
  • 文档的 XML 知识将帮助我们找到图像/表格/附件/链接等的确切位置

PYWIN32- 这个库帮助我们利用 VBA 的功能,但使用 python。附件不过是 OLE 对象。因此,每当我们处理附件时,pywin32 都会帮助我们。因此,如果我们正在创建一个新文档,附件的这种嵌入很容易,否则 rels 将帮助我们,因为 ole 对象或包也与“rid”相关联,并且 rels 具有这些信息。

众所周知,excel有范围,但我们现在必须知道单词也有范围,pywin32在插入嵌入对象时利用了这个范围。

探索 microsoft 文档,这将对我们有很大帮助。

让我知道您是否使用过任何其他 python 库来实现 MS Word 自动化或这些库的任何增强使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/22896/56150909

posted @   哈哈哈来了啊啊啊  阅读(1773)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示