注意:该作者博客已迁移至https://buxianshan.xyz

使用Python-docx库可以很方便的处理docx文件(官方文档)

但是有些隐含的信息Python-docx库好像无法读取,比如docx文档里的批注

下面介绍一种用python获取docx文档批注的方法

首先区分doc文件和docx文件

以前Office产品中Word用.doc文件格式,这种二进制格式很难与其他软件兼容 。docx是Microsoft Office2007之后版本使用的,用新的基于XML的压缩文件格式取代了以前默认文件格式,在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。

docx格式的文件本质上是一个ZIP文件。将一个docx文件的后缀改为ZIP后是可以用解压工具打开或是解压的。事实上,Word2007的基本文件就是ZIP格式的,他可以算作是docx文件的容器。

比如有一个test.docx文件


内容如下(包含两个批注)

把它后缀名改为.zip


解压test.zip


打开解压后的文件,可以看到原docx文件被分成了好多xml文件


原docx文件的信息都包含在这些xml文件中,比如正文包含在word/document.xml中


通过查找发现批注被保存在了word/comments.xml


如此,我们便可以很方便的用python获取批注

  • 首先解压docx文件
  • 然后用BeautifulSoup解析word/comments.xml提取批注信息

代码如下:

from zipfile import ZipFile
from bs4 import BeautifulSoupdocument = ZipFile('test.docx')
xml = document.read("word/comments.xml")
wordObj = BeautifulSoup(xml.decode("utf-8"), features="html.parser")
texts = wordObj.findAll("w:t")
for text in texts:print(text.text)

输出:


(同理也可以提取其它信息)

参考:

  • https://blog.csdn.net/qq_20183489/article/details/76736089
  • https://baike.baidu.com/item/docx/6517348?fr=aladdin

Python获取docx文档里的批注相关推荐

  1. python获取docx文档的内容(文本)

    首先下载第三方库python-docx: pip install python-docx(在py文件里面导入的时候是import docx) 简单的说,docx里面的每一个段落都是一个paragrap ...

  2. Python操作docx文档设置居中并创建表格

    功能描述:本文代码使用python-docx操作docx文档,添加一段文字并设置居中对齐,添加一个表格并为所有单元格设置文字. from docx import Document from docx. ...

  3. Python读取docx文档的内容

    Python读取docx文档的内容 下载好解析docx文档的包,Python-docx是专门针对于word文档的一个模块. doc.paragraphs 段落集合 doc.tables 表格集合 do ...

  4. Python3-word文档操作(二):利用python获取word文档的内容

    上一篇,学习了是用python的docx库创建一个word文档,并且编辑了标题和正文.本篇继续python操作word之旅:利用python来获取word文档的内容. python脚本: # -*- ...

  5. python——读取docx文档wordcloud生成词云并进行词频统计

    文章目录 环境准备 导入库 读取docx并进行分词 词频 词云 设置背景图片(可选) 生成词云 保存词云并显示 环境准备 # 不是docx,是python-docx!!!!!!! pip instal ...

  6. Python把docx文档中的题库导入SQLite数据库

    #本文所用的docx文档题库包含很多段,每段一个题目,格式为:   问题.(答案) #与之对应的数据库datase.db中tiku表包含kechengmingcheng,zhangjie,timu,d ...

  7. Python修改docx文档格式

    任务:原docx文档修改标题和页面宽高. 步骤:1.原docx文档解压为document.xml(见最后) 2.通过xml解释替换标签属性值,保存为document_format.xml 3.还原do ...

  8. python实现docx文档首行缩进2字符

    下面是一个示例代码,它使用 python-docx 库来实现 docx 文档的首行缩进 2 字符: from docx import Document# 打开一个 docx 文档 document = ...

  9. python-docx获取docx文档多级目录

    想要从docx文档中读取各层目录,即便是翻了官方文档,也没有找到对应内容,最后看了代码,总算是略有所得,写篇文章记录一下. python-docx中与标题相关有一个函数,添加标题,add_headin ...

最新文章

  1. 方法功能从无参方法、含参方法到重载方法
  2. 数据结构 — 平衡二叉树
  3. Android 7.0 多窗口模式
  4. JavaScript基础04【逻辑、复制、关系、相等运算符、Unicode编码表】
  5. iOS Base64转码(使用ios7系统自带编码库 和 GMTBase64 两种方式)
  6. 如何在邮件系统中使用自己的域名?
  7. hbase简介(大数据技术)
  8. oracle 10g冷备份恢复处理详细步骤
  9. java note项目_Java Request.setNote方法代码示例
  10. Linux shell 编程(四):变量
  11. 【科研】计算社会科学与复杂科学
  12. C-Lodop使用及常见错误排查
  13. 日常使用的图片文件格式及各自的区别,JPG/PNG/GIF/RAW/WebP/HEIC
  14. 「计算机日常」笔吧测评室笔记本测评科普视频笔记
  15. 《人生的智慧》-叔本华著[韦启昌-(译)]
  16. vysor技术实现原理(投屏不包括鼠标控制)
  17. 现有的人脸数据库介绍及下载链接
  18. 微信开发-隐藏微信浏览器顶部菜单
  19. bzoj4476: [Jsoi2015]送礼物
  20. android 蓝牙 遥控 电脑,Android系统适配蓝牙遥控器键值

热门文章

  1. SourceTree 提交报错 闪退
  2. 字符串倒序输出 递归和正常写法
  3. 华为 android p系统,基于Android P打造 华为EMUI 9.0发布:流畅度提升12.9%
  4. 插件进入显示:{“errcode“:40029,“errmsg“:“invalid code,hints:[req_id:rljdFLyWf-jkkUpa]“},无法体验,请修改后再提交审核(测试环境
  5. 艾司博讯:拼多多运费险怎么赔付
  6. 多功能剪辑,处理多个视频边框虚化并有闪烁光晕的效果
  7. 【目标检测】|ECCV2020-HCE-全局Roi Align目标检测网络 | Hierarchical Context Embedding for Region-based Object Detec
  8. 天梵古法健康知识普及:(一)手太阴肺经经穴
  9. 《opencv学习笔记》-- 矩阵归一化 normalize()函数
  10. 工作劳累,经常对着电脑,脸上起来很多痘痘,用什么办法可以治疗?