【python】使用docx获取word文档的标题等级、大纲等级和编号等级

标题等级、大纲等级、编号等级的区别

在Microsoft Word中:

  • 【标题X】是一个样式,一般来说,【标题1】样式的大纲级别是1级。
  • 大纲级别一般用于页面导航和生成目录。可以右键文字->段落里查看/设置大纲的级别。设置成【x级】后左侧导航栏就会显示。
  • 编号等级就是大家熟知的项目编号,常用于正文。

1、使用docx读取word文档

python 复制代码
from docx import Document

source_path = "./test.docx"
docs = docx_Document(source_path)

基本没有一个python库能直接读取doc文档的,所以需要先把doc转化为docx文件,参考:【python】linux系统下doc转docx文件

2、使用docx获取word文档的标题 等级 样式

python 复制代码
import re

for paragraph in docs.paragraphs:
    if paragraph and paragraph.text:
        # 获取xml源码
        xml = paragraph._p.xml
        # 进行xml源码字符匹配
        if xml.find('<w:outlineLvl') >= 0:
            start_index = xml.find('<w:outlineLvl')
            end_index = xml.find('>', start_index)
            outlineLvl_value = xml[start_index:end_index+1]
            outlineLvl_value = re.search("\d+", outlineLvl_value).group()
            print(f"文本:{paragraph.text}-->大纲等级:{outlineLvl_value}")

原理:

1、docx.Document()读取文档后会按照文章段落划分成一段一段的。

2、然后我们再获取每个段落的xml源码,即:xml = paragraph._p.xml。

3、源码中的<w:outlineLvl w:val="2"/>就表示这是个3级大纲(因为是从0开始)。

4、接下来就好办了,就用字符串匹配把这个值提取出来就行了。

3、使用docx获取word文档的编号等级

原理和代码同上,只需要把outlineLvl改成ilvl即可。

相关推荐
liwulin050616 分钟前
【ESP32-CAM】HELLO WORLD
python
大飞pkz29 分钟前
【设计模式】C#反射实现抽象工厂模式
设计模式·c#·抽象工厂模式·c#反射·c#反射实现抽象工厂模式
Doris_202340 分钟前
Python条件判断语句 if、elif 、else
前端·后端·python
Doris_20231 小时前
Python 模式匹配match case
前端·后端·python
这里有鱼汤1 小时前
Python量化实盘踩坑指南:分钟K线没处理好,小心直接亏钱!
后端·python·程序员
大模型真好玩2 小时前
深入浅出LangGraph AI Agent智能体开发教程(五)—LangGraph 数据分析助手智能体项目实战
人工智能·python·mcp
测试老哥2 小时前
Selenium 使用指南
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
百锦再2 小时前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame
唐青枫2 小时前
从入门到进阶:C#.NET Stopwatch 计时与性能测量全攻略
c#·.net
张子夜 iiii2 小时前
4步OpenCV-----扫秒身份证号
人工智能·python·opencv·计算机视觉