从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 进行交互。
我正在尝试从 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 进行交互。