【问题标题】:Python-Docx: How to identify whether a paragraph is italicizedPython-Docx:如何识别段落是否斜体
【发布时间】:2021-12-25 12:46:22
【问题描述】:

所以,假设我有这个代码:

import docx

doc = docx.Document(r'C:\example.docx')
run_list = []

for p in doc.paragraphs:
   for run in p.runs:
      if not run.italic:
         run_list.append(run.text)

它现在会准确地将所有非斜体运行添加到 run_list,并跳过所有斜体运行。但是,如果整个段落是斜体,而不是仅运行一次,run.italic 将返回False。没有paragraph.italic 方法,所以我想知道如何也跳过所有斜体段落?

【问题讨论】:

  • 什么是doc
  • doc是该方法应用到的文档(例如example.docx)
  • 仍然没有足够的代码来解释你在做什么。 docx 是什么?
  • 如果是latex文本那么你可以检查条件== "*"那么这意味着下面的段落将被斜体。然而,我们绝对没有太多信息,但检查星星的想法可能是你目前为止最好的技巧之一..
  • 这是关于 python-docx 模块的;从标题中可以看出...

标签: python python-docx


【解决方案1】:

好的,经过大量挖掘,我似乎遇到了 python-docx 的限制。显式样式(即直接应用于运行的样式)和有效样式(即由于样式层次结构而显示的内容)之间存在差异。失败的段落应用了“微妙强调”样式。这种风格告诉 Word 在整个段落中应用斜体;因此,单个运行没有分配它。

在某种程度上,可以通过比较paragraph.style.name 来抵消这种情况。但是,除此之外,python-docx 无法评估 有效 样式。

延伸阅读:https://python-docx.readthedocs.io/en/latest/dev/analysis/features/text/font.html

https://python-docx.readthedocs.io/en/latest/user/styles-using.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2022-08-04
    相关资源
    最近更新 更多