python-docx 在单元格应满时返回空单元格
python-docx returning empty cells when they should be full
我正在尝试遍历文档中的所有表格并从中提取文本。作为中间步骤,我只是尝试将文本打印到控制台。
我在类似的帖子中查看了 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),它只会打印()。我猜这是一个空列表。不过,我的文档确实在单元格中有文本。不知道这里出了什么问题。
感谢任何帮助,
单元格文本 "contained" 可能位于 python-docx
尚不理解的包装元素中。最常见的例子是修订标记。
诊断问题最直接的方法是使用 opc-diag
(作为一种选择)检查 XML 是否有问题 table。但如果是修订标记,我相信接受文档的所有修订将修复它,尽管我自己还没有真正尝试过。
如果那不行,你 post 一个样本 table XML 我可以仔细看看。
发现错误。我使用第三方工具(multiDoc 转换器)将旧的 .Doc 文件转换为 Docx 格式。大多数情况下都有效,但是必须有一些元数据无法正确转换,因为它导致了问题。打开文件并将其手动保存为 Docx 解决了这个问题。唯一的问题是我想将 2000 多个文件转换为 Docx,因此我需要找到另一种解决方案来转换文件。
我的文档有数百个表格,只有少数表格显示为空(但实际上并非如此)。因此,我尝试使用 tabula 从同一文档的 pdf 版本中提取数据,结果相同:一些新创建的表格是空的!
经过一番挖掘,我意识到我的 Word 文档处于“跟踪更改”模式(让“更改栏”指示与以前版本的差异,表格本身是一个更改,而不是尚未接受,那是未提取的表格...
解决方案:在我的例子中,我必须接受对文档的所有更改(在 Word 的“审阅”选项卡中,在“接受”向下滚动中,单击“接受所有更改”)并保存文档再次.
我正在尝试遍历文档中的所有表格并从中提取文本。作为中间步骤,我只是尝试将文本打印到控制台。
我在类似的帖子中查看了 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),它只会打印()。我猜这是一个空列表。不过,我的文档确实在单元格中有文本。不知道这里出了什么问题。
感谢任何帮助,
单元格文本 "contained" 可能位于 python-docx
尚不理解的包装元素中。最常见的例子是修订标记。
诊断问题最直接的方法是使用 opc-diag
(作为一种选择)检查 XML 是否有问题 table。但如果是修订标记,我相信接受文档的所有修订将修复它,尽管我自己还没有真正尝试过。
如果那不行,你 post 一个样本 table XML 我可以仔细看看。
发现错误。我使用第三方工具(multiDoc 转换器)将旧的 .Doc 文件转换为 Docx 格式。大多数情况下都有效,但是必须有一些元数据无法正确转换,因为它导致了问题。打开文件并将其手动保存为 Docx 解决了这个问题。唯一的问题是我想将 2000 多个文件转换为 Docx,因此我需要找到另一种解决方案来转换文件。
我的文档有数百个表格,只有少数表格显示为空(但实际上并非如此)。因此,我尝试使用 tabula 从同一文档的 pdf 版本中提取数据,结果相同:一些新创建的表格是空的!
经过一番挖掘,我意识到我的 Word 文档处于“跟踪更改”模式(让“更改栏”指示与以前版本的差异,表格本身是一个更改,而不是尚未接受,那是未提取的表格...
解决方案:在我的例子中,我必须接受对文档的所有更改(在 Word 的“审阅”选项卡中,在“接受”向下滚动中,单击“接受所有更改”)并保存文档再次.