2016-11-02 68 views
3

我试图从MS Word文档(.docx文件)中的标题(任何级别)中提取text。目前我正在努力解决使用python-docx,但不幸的是,我仍然无法弄清楚它是否在阅读后可行(也许我错了)。从word文档中提取标题的文本

我试图在网上寻找解决方案,但没有发现任何与我的任务相关的具体内容。如果有人能在这里指导我,那将是非常棒的。

+1

那么你有什么尝试,你能告诉我们,你遇到了什么问题? – MooingRawr

回答

4

根本挑战是识别标题段落。就读者而言,没有任何东西阻止作者将“正规”段落的格式设置为(并充当)标题。

然而,作者可靠地使用样式创建标题并不罕见,因为这样做可以自动将这些标题编译到目录中。

在这种情况下,您可以迭代段落,并选择其中一种标题样式。

def iter_headings(paragraphs): 
    for paragraph in paragraphs: 
     if paragraph.style.name.startswith('Heading'): 
      yield paragraph 

for heading in iter_headings(document.paragraphs): 
    print heading.text 

标题级别可以从全样式名称解析,如果他们已经把默认设置(如“标题1”,“标题2”,...)。

如果作者已重命名标题样式,则可能需要对其进行调整。

还有更复杂的方法更可靠(只要不依赖风格名称),但那些方法不支持API,所以您需要深入内部代码并与一些风格进行交互XML直接我期望。