从word文档中提取标题文本

Extracting headings' text from word doc

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

我试图在网上寻找解决方案,但没有找到适合我的任务的解决方案。如果有人可以在这里指导我,那就太好了。

根本的挑战是识别标题段落。就 reader 而言,没有什么可以阻止作者将 "regular" 段落格式化为看起来(并用作)标题。

但是,作者可靠地使用样式创建标题的情况并不少见,因为这样做可以自动将这些标题编译成 table 内容。

在这种情况下,您可以遍历段落,并挑选出具有其中一种标题样式的段落。

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

如果保留默认设置(如 'Heading 1'、'Heading 2'、...),则可以从完整样式名称解析标题级别。

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

有更可靠的更复杂的方法(就 style-name 独立而言),但这些方法没有 API 支持,因此您需要深入研究内部代码并直接与我期望的某些样式 XML 进行交互。