2013-06-28 57 views
1

我正在通过word文档搜索标题和自动编号并将它们分配给元组。在MS 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 

是否有更有效的方法来搜索标题而不是调用和检查Word文档中的每个段落对象?

编辑:

我还要提到我用这:

doc.ConvertNumbersToText() 

的自动编号转换成段落文本搜索的东西。

第二个编辑:

我不是找表的内容,但我希望能够作为一个选项。我只是在寻找标题1,2,3,4,5,6 ...等等。

+0

它比这更糟,因为你还应该寻找基于标题样式的样式。另外,你关心大纲级别吗? – JasonPlutext

回答

0

如果您在Word中录制宏,然后在对话框中使用goto(按Ctrl-G),选择标题,你会得到像声明:

Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:="" 

在转到对话框,您也可以选择字段,AUTONUM,如果这是您所指的自动编号的类型。

另外,记录使用高级查找宏,单击格式按钮和风格。如要索取:

Selection.Find.Style = ActiveDocument.Styles("Heading 1") 

这允许你指定特定的标题样式。

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

+0

我打算以后在Access中输入这些数据,所以我只是将文档解析为块。 –

+0

Hello @ Doof12。 TOC只是一个建议,如果您需要从标题中获取文本,然后删除TOC。但是,如果你想将文档解析为块,那么我会查看“大纲视图”(从视图选项卡)。在这里,您可以折叠不同标题级别的内容,复制并粘贴它们,仅显示特定标题等。 –