关于python-docx无法获取word自动编号的一种解决方法

关于python-docx无法获取word自动编号的一种解决方法

使用python获取word自动编号的序号时,网上查了用python-docx来识别,其中尝试用正则等方法都无法获取到,看到通过读取word的xml文件结构来获取又比较复杂,后尝试使用了pywin32库来实现,效果如下:

部分代码:

import win32com.client as win32

def ghn(t_doc):
    word = win32.gencache.EnsureDispatch('Word.Application')
    doc = word.Documents.Open(t_doc)
    #word.Visible = True

    #查找标题为“一级标题”的位置
    search_range = doc.Content
    search_range.Find.Text = "一级标题"
    search_range.Find.Execute()
    start_range = search_range.End
    end_range = doc.Content.End

    #设置要遍历的大纲级别
    outline_levels = [1, 2, 3, 4]

    #遍历指定范围内的所有段落:从"一级标题"开始至文档结尾
    for paragraph in doc.Range(start_range, end_range).Paragraphs:
        #匹配该段落的大纲级别
        if paragraph.OutlineLevel in outline_levels:
            #获取该段落word自动编号的序号
            number = paragraph.Range.ListFormat.ListString
            print(number)

    doc.Close()
    word.Quit()

t_doc = r"C:\X\X\1.docx"
ghn(t_doc)

未安装pywin32库需要提前安装一下。以上代码片段主要是实现在一个文档中找到某个关键字起始范围内的所有1-4级大纲标题前的序号并输出。

文档编号:

在这里插入图片描述

执行效果:

在这里插入图片描述

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值