关于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级大纲标题前的序号并输出。