使用 Python 从 .docx 文件中仅提取特定字体类型的文本

Extract only text of a certain font type from a .docx file using Python

我想从我的 .docx 文件中提取类型为 'Arial' 的所有文本。这是我目前所拥有的,但它没有产生任何输出(文档中的大部分文本都是 'Arial' 类型)。

from docx import *

document = Document('word.docx')
for paragraph in document.paragraphs:
    for run in paragraph.runs:
        if run.style == "Arial":
            print(run.text)

Style 与文档中的 font 不同。 word中的样式是指应用命名样式(如'heading')。可悲的是,大多数人不使用样式,而只是抓取一段文本并更改字体。

通过对测试文档的一些挖掘,font 属性似乎就是您要查找的内容。对于这样的文档:

Default Font.

Arial Font.

Default Arial Default Courier.

我可以找到 non-default 字体部分:

>>> from docx import Document
>>> from itertools import chain

>>> doc = Document("test.docx")
>>> runs = list(chain.from_iterable(list(p.runs) for p in doc.paragraphs))
>>> [r.font.name for r in runs]
[None, None, 'Arial', None, None, 'Arial', None, 'Courier New', None]
>>> [r.text for r in runs]
['Default Font.', '', 'Arial Font.\n', '\n', 'Default ', 'Arial', ' Default ', 'Courier.', '']