使用 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.', '']
我想从我的 .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.', '']