python-docx在它们应该满时返回空单元格

问题描述 投票:1回答:2

我试图遍历文档中的所有表并从中提取文本。作为中间步骤,我只是尝试将文本打印到控制台。

我在类似的帖子中查看了scanny提供的其他代码,但由于某种原因,它没有从我正在解析的文档中给出我预期的输出

该文件可在https://www.ontario.ca/laws/regulation/140300找到

from docx import Document
from docx.enum.text import WD_COLOR_INDEX
import os, re, sys

document = Document("path/to/doc")

tables = document.tables

for table in tables:

    for row in table.rows:

         for cell in row.cells:

              for paragraph in cell.paragraphs:
                   print(paragraph.text)

我希望这会打印出所有文字,但我什么都没得到。如果我尝试打印(row.cells)它只是print()。这是一个空列表我猜。我的文件确实在单元格中有文字。不知道这里有什么不对。

任何帮助表示赞赏,

python ms-word python-docx
2个回答
0
投票

单元格文本可能“包含”在python-docx尚未理解的包装元素中。最常见的例子是修订标记。

诊断问题的最直接方法是使用opc-diag(作为一个选项)检查有问题的表的XML。但如果它是修订标记,我相信接受文档的所有修订都会修复它,尽管我自己并没有真正尝试过。

如果这不起作用并且您发布了表XML的示例,我可以仔细查看。


0
投票

发现错误。我使用第三方工具(multiDoc转换器)将旧的.Doc文件转换为Docx格式。大多数情况下都有效,但是必须有一些元数据无法正确转换,因为它导致了问题。打开文件并手动将其保存为Docx解决了问题。唯一的问题是我想将2000+文件转换为Docx,所以我需要找到另一种转换文件的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.