【问题标题】:Extracting MS Word document formatting elements along with raw text information提取 MS Word 文档格式元素以及原始文本信息
【发布时间】:2016-11-02 01:29:59
【问题描述】:

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}]

【问题讨论】:

    标签: python ms-word python-docx


    【解决方案1】:

    字符级格式化(“字体”)属性在运行级可用。段落由运行组成。所以你可以通过降低到那个级别来得到你想要的,比如:

    for paragraph in document.paragraphs:
        for run in paragraph.runs:
            font = run.font
            is_bold = font.bold
            etc.
    

    您可能遇到的最大问题是运行只知道直接应用于它的格式。如果由于应用了 style 而使其看起来像它的样子,则您必须查询该样式(也有一个字体对象)以查看它具有哪些属性。

    请注意,Mike 所说的 python-docx 是在 v0.2.0(现为 0.8.6)之后完全重写的旧版本。文档在这里:http://python-docx.readthedocs.org/en/latest/

    【讨论】:

    • 正是我想知道的。谢谢!
    • 必须有一个小修复:for run in paragraph.runs:
    • @machin:啊,是的,谢谢你,我已经编辑好了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2013-07-06
    • 1970-01-01
    • 2013-11-07
    • 2020-04-02
    • 2021-05-26
    • 2018-06-24
    相关资源
    最近更新 更多