python-docx中表的意外索引



我有一个任务,从大量*.docx文件中的表中收集数据。我使用python "docx"模块来完成此操作。我写的脚本,适用于所有文件中95%的表。然而,我在剩下的5%的文档中遇到了一个特殊的表。当从这些表中收集数据时,我的脚本给出了非常奇怪的结果。

我注意到的是,这些表中的单元格索引是非常奇怪的。它有点对角。

为了说明这一点,下面是脚本。它应该只打印表中每行的第一个单元格。
from docx import Document as dc
doc_path='u:/Documents/Samples/Sample_document1.docx' doc=dc(doc_path)
tables=doc.tables

for i, row in enumerate(tables[0].rows):
print(i, row.cells[0].text)

使用"Sample_document1.docx"但是使用"Sample_document2.docx"中断并给出意想不到的结果。我的谷歌磁盘上的文件链接如下。

你能告诉我这种影响的原因是什么,我如何才能通过它吗?

https://docs.google.com/document/d/1TzkJB4OlrBy1jIVdf3HdKqkkoBpvIuBB/edit?usp=sharing& rtpof = true& sd = true

https://docs.google.com/document/d/13_3pCFp3sPCn6nNHmkq5j9ClLPhKG5VB/edit?usp=sharing& ouid = 115832391196959770902, rtpof = true& sd = true

检查第一个示例和第二个示例的代码输出:

for row in tables[0].rows:
print(row.cells)

似乎你的代码中断时,Python试图访问row.cells[0]row.cells-元组与空元素。你应该检查它们是否为空。

最新更新