续:python 基于-docx库解决docx自动编号识别问题的一种参考方案(附详解、附代码)

本文详细介绍了如何通过Python的fromdocx库解析MicrosoftWord.docx文档中的自动编号信息,包括编号样式存储在numbering.xml中的结构,以及编号在document.xml中出现的位置。作者展示了如何获取numId、abstractNumId、start等关键信息,并提供了查找和替换自动编号格式的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2024.5.31更新2点:1、发现有些中文自动编号不是叫chineseCounting,后面还带了thousand什么的,所以 if num_fmt == "chineseCounting" 要改为 if "chineseCounting" in num_fmt。2、之前对自动编号假设只有3级,虽然看起来数字是连续的,但实际上每个都可能是一组新的自动编号的第一个,对此,修正后对应代码应为:

start_lv123 = [i*0 for i in range(len(List_of_dict))]  #原本是start_lv123=[0,0,0]

for k in range(len(List_of_dict)):
if "start" in List_of_dict[k].keys():
start_lv123[k]=int(List_of_dict[k]["start"].split('\'')[0])


我的上一次文章大概说明了基于docx库解决自动编号识别问题的原理和结论(参见上一篇文章http://t.csdnimg.cn/gozU9),在这篇文章进一步说明一些细节问题,最后附上代码。

我这里有一个text.docx文档(见下图),带有2级自动编号:一、二、 以及1.2. 。以此为例说明。

一、记载“文档自动编号样式信息”的位置在哪里?

自动编号的种类、样式等信息储存在numbering.xml当中(每个docx都是一个zip,手动改变后缀名后可打开压缩包,找到/word/numbering.xml这个文件)。最上层的节点叫numbering,下面与4个节点,分别是2个num和2个abstractNum。每个num节点记录了某个numId值与某个abstractNumId 值的对应关系。节点abstractNum记录了每一个abstractNumId 值对应的自动编号长成什么样、起始序号是几、序号是中文还是数字等等信息。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值