在this post @mikemaccana中描述了如何使用python-docx从python中的MS Word文档中提取原始文本数据。我想更进一步。我还可以使用此模块来获取有关字体(例如粗体与斜体)或字体大小(例如12对18pt)的信息,而不是简单地提取原始文本信息。我最接近的是this post询问使用此模块提取突出显示的文本条目。
看起来有点抽象,我不完全确定这里发生了什么。有没有更简单的方法从python中的Word文档中提取格式信息?通过快速文档模板:
这里第一行是一个带有一个句子的大标题。
第二行略小。它也有两个句子。
更小。但那还不是全部。这一行有三个句子。
最后,这是一个非常规的文本行。
如果我们将这四行称为word文档,我想编写一个解析函数,称之为doc_parser
,它会返回之类的以下内容:
>>>> doc_data = doc_parser(path_to_example_doc)
>>>> print(doc_data)
[1] [{'font': 18, 'face': 'bold', 'n_sentence': 1},
{'font': 16, 'face': 'bold', 'n_sentence': 2},
{'font': 14, 'face': 'bold', 'n_sentence': 3},
{'font': 12, 'face': 'plain', 'n_sentence': 1}]
答案 0 :(得分:1)
字符级格式化(" font")属性在运行级别可用。段落由运行组成。因此,您可以通过下达到该级别来获得您想要的内容,例如:
for paragraph in document.paragraphs:
for run in paragraph.runs:
font = run.font
is_bold = font.bold
etc.
您可能遇到的最大问题是,该运行只知道直接应用于它的格式。如果它看起来像是因为样式已应用于它,你必须查询样式(也有一个字体对象)以查看它具有的属性。
请注意,Mike正在谈论的python-docx是在v0.2.0(现在为0.8.6)之后完全重写的遗留版本。文档在这里:http://python-docx.readthedocs.org/en/latest/