【问题标题】:How to use python-docx or any other similar package to save font style (bold and italic) from Word document如何使用 python-docx 或任何其他类似包从 Word 文档中保存字体样式(粗体和斜体)
【发布时间】:2019-12-01 20:14:30
【问题描述】:

我正在尝试筛选 Word 文档并完成一些快速的语法检查。我目前有使用 python-docx 将文档拆分为单词的代码,然后我根据特定标准对单词/句子进行语法检查。然后,我使用 .add_run 函数将正确的语法返回到文档中。 我遇到的问题是当我将正确的语法传递回文档时,它不会保存字体样式(粗体和斜体),所以当我粘贴单词时,它只是显示为没有粗体和斜体的文本当我想保留它时。 我的问题是,在 python 中是否有任何方法(使用 python-docx 或任何其他包)来保存每个单词的字体详细信息(主要是粗体和斜体),以便我可以使用代码相应地对单词进行粗体或斜体?

我已经尝试对段落和运行使用 .style 函数,但出现的问题是每个段落的样式不清楚是粗体和斜体,我不想粘贴整个段落,只是用错了词。 我也尝试查看每次运行的 .style ,但它不可靠,因为运行经常将一个单词拆分为 2 而它不应该。 (即使没有任何风格变化,“Mario”也可能变成 2 个不同的运行“M”和“ario”)。

我也尝试查看其他软件包,但没有发现任何有用的东西。

如果输入是“Stack Overflow 是一个面向专业和爱好者程序员的问答网站。”(其中“问题”和“答案”为粗斜体), 预期的输出是与单词“question”和“answer”相同的句子,粗体和斜体

实际输出是同一个句子,但没有任何粗体或斜体。

【问题讨论】:

    标签: python python-docx


    【解决方案1】:

    在一般情况下这是一个具有挑战性的问题:

    1. 字符格式可以应用于各种级别(直接、样式、文档默认等),因此确定特定运行的有效字符格式不是一个单步过程。
    2. 一个给定的单词可以部分出现在不止一次运行中,并且不能保证单词的所有部分都是完整的运行,例如a sequence of five r|uns could ab|so|lut|ely be split like this"

    所以你的工作已经完成了。一般情况下的解决方案可能对每个单词都有一个Word 对象,每个单词都有一个(run, offset, length) 元组序列,通过适当的处理,可以为您提供所需的信息。您可能会假设单词的第一个字符的格式可以安全地应用于整个单词。在这种情况下,您可以只拥有一系列 (word, run) 对,其中 run 项目是 word 的第一个字符出现的项目。

    首先,我会查看 run.boldrun.italic 以获得最常见的格式,然后从那里开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-30
      • 2012-01-21
      • 2011-07-18
      相关资源
      最近更新 更多