小能豆

为什么Python不能正确识别docx文件中的斜体字体?

python

我使用 Python 检测 docx 文件中的所有斜体字体。问题是:没有找到所有斜体字体,只是找到其中的一些字体。例如,在 bebe.docx 中,我有接下来的 4 行,全部都有斜体字体。泰晤士新罗马字 (13)。

Bebe.

Bebe este acasa maine.

- Bebe.

- The Little Mermaid sighed and looked sadly at her fish tail.

这是要检查的简单 Python 代码:

from docx import Document

for para in Document('bebe.docx').paragraphs:

    for run in para.runs:

        print(f"Text: {run.text}, Bold: {run.bold}, Italic: {run.italic}")

尽管在 .docx 中它们是斜体字体,但它们都不能被识别为斜体。然而,粗体字体的识别度非常好。看看 Python 发现了什么:

Text: Bebe, Bold: None, Italic: None
Text: ., Bold: None, Italic: None
Text: Bebe, Bold: True, Italic: None
Text:  este acasa maine., Bold: None, Italic: None
Text: - Bebe, Bold: None, Italic: None
Text: ., Bold: None, Italic: None
Text: - The Little Mermaid sighed and looked sadly at her fish tail., Bold: None, Italic: None

有些人似乎让代码正常工作,它检测到斜体。为什么它没有检测到我?


阅读 116

收藏
2023-09-25

共1个答案

小能豆

根据你提供的信息,你的代码看起来应该可以识别斜体字体,因为你使用了 run.italic 来检查字体是否为斜体。但是,根据你的代码输出,似乎没有检测到斜体。

这个问题可能与不同的字体或文档设置有关。有时,如果文档中使用的斜体字体与 Python-docx 库的字体匹配,识别斜体可能会更容易。另外,字体的具体设置也可能影响识别。

以下是一些可能有助于解决问题的步骤:

  1. 确保文档中的文本确实为斜体:首先,请确保文档中的文本确实被设置为斜体字体。你可以手动检查文档,确保斜体文本被正确应用。
  2. 使用不同的文档和字体:尝试在不同的文档中使用不同的字体和样式,以查看是否存在相同的问题。这有助于确定是否是特定文档或字体的问题。
  3. 更新 Python-docx 库:确保你使用的是最新版本的 Python-docx 库。有时,库的更新可能修复一些问题。
  4. 检查文档设置:文档中的字体和样式设置可能会影响 Python-docx 的识别能力。确保文档的字体设置是标准的,并且没有使用特殊的字体。

如果你仍然遇到问题,可以考虑使用其他方法来检测斜体文本,例如使用正则表达式来检测文本是否被包含在 <i><em> 标签中(如果文档是 HTML 格式),或者使用其他文本处理库来处理文档。这些方法可能会更灵活,但需要根据文档的具体格式和内容进行适当的调整。

2023-09-25