Python 在MS Word中搜索标题

Python 在MS Word中搜索标题,python,regex,python-2.7,ms-word,pywin32,Python,Regex,Python 2.7,Ms Word,Pywin32,我正在word文档中搜索标题和自动编号,并将它们分配给元组 (Heading Style, 1.1, text) 目前,我正在使用for循环传递文档中的每个段落对象并对其进行搜索 for x in xrange(1, doc.Paragraphs.Count+1):#for loop to print through paragraphs oText = doc.Paragraphs(x) if not oText.Range.Tables.Count >0 :

我正在word文档中搜索标题和自动编号,并将它们分配给元组

(Heading Style, 1.1, text)
目前,我正在使用for循环传递文档中的每个段落对象并对其进行搜索

   for x in xrange(1, doc.Paragraphs.Count+1):#for loop to print through paragraphs
    oText = doc.Paragraphs(x)
    if not oText.Range.Tables.Count >0 :
        results = re.match('(?P<number>(([1-3]*[A-D]*[0-9]*)(.[1-3]*[0-9])+))', oText.Range.Text)
        stylematch = re.match('Heading (?P<i>\d)', oText.Style.NameLocal)
        if results!= None and oText.Style != None and stylematch != None:
            doccat.append((oText.Style.NameLocal, oText.Range.Text[:len(results.group('number'))],oText.Range.Text[len(results.group('number')):]))
            style = oText.Style.NameLocal
将自动编号转换为可在段落文本中搜索的内容

第二次编辑:


我不是在寻找目录,虽然我希望能够作为一个选项。我只是在寻找标题1、2、3、4、5、6……等等。

如果您在Word中录制宏,并使用Goto(Ctrl-G),在对话框中选择标题,您将获得如下语句:

Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:=""
在“转到”对话框中,您还可以选择字段AUTONUM(如果这是您所指的自动编号类型)

或者,使用“高级查找”录制宏,单击“格式”按钮和“样式”。。获得:

Selection.Find.Style = ActiveDocument.Styles("Heading 1")
这允许您指定特定的标题样式


第三个选项是创建一个目录——它基于标题样式——抓取它的文本,然后
Undo
目录。(我没有尝试过这样做,但我确信它会起作用。当然,这取决于您的具体意图。)

我计划稍后在Access中输入此数据,所以我只是将文档解析为块。Hello@Doof12。如果需要从标题中获取文本,TOC只是一个建议,之后删除TOC。但是,如果您想将文档解析为块,那么我将查看
大纲视图
(从视图选项卡)。在这里,您可以折叠不同标题级别的内部内容,复制并粘贴它们,仅显示某些标题等。更糟糕的是,您还应该查找基于标题样式的样式。另外,你是否关心大纲级别?
Selection.Find.Style = ActiveDocument.Styles("Heading 1")