我正在搜索单词文档中的标题和自动编号,并将它们分配给元组。
(Heading Style, 1.1, text)
目前我正在使用for循环传递文档中的每个Paragraph对象并进行搜索。
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
是否有更有效的方法来搜索标题,而不是调用和检查Word文档中的每个Paragraph对象?
修改
我还应该提到我正在使用它:
doc.ConvertNumbersToText()
将自动编号转换为段落文本中可搜索的内容。
第二次编辑:
我不是在寻找目录,尽管我希望能够作为一种选择。我只是在寻找标题1,2,3,4,5,6 ......等等。
答案 0 :(得分:0)
如果您在Word中录制宏,并使用转到(Ctrl-G),在对话框中选择标题,您将获得如下声明:
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:=""
在GoTo对话框中,如果这是您所指的自动编号类型,您还可以选择字段,AUTONUM。
或者,使用“高级查找”录制宏,单击“格式”按钮,然后单击“样式...”以获取:
Selection.Find.Style = ActiveDocument.Styles("Heading 1")
这允许您指定特定的标题样式。
第三种选择是创建一个目录 - 它基于标题样式 - 抓取其文本,然后Undo
TOC。 (我没有尝试过,但确信它会起作用。当然,这取决于你的具体意图。)