在python中读取word doc中嵌套表格的内容

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

我有一个 Word 文档,其中包含嵌套在表格中的表格,我尝试使用 python-doc 阅读它,但阅读它通常会导致几乎所有文本的多个重复。

例如我目前正在使用:

for table in docfile.tables:
     for row in table.rows:
          for cell in row.cells:
               data.append(cell.text)

这会导致在我的列表中仅显示 17 次的文本被打印 100 多次,或者在文档中仅显示 3 次的其他文本被打印 10 多次。有没有办法正确提取嵌套表中的数据?

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

不太确定为什么你会看到这个特定的问题,但是为了处理嵌套问题,你可以使用递归函数 - 仅作为示例,

def process_table(table):
    for row in table.rows:
        for cell in row.cells:
            print(cell.text)
            for subtable in cell.tables:
                process_table(subtable)

for table in document.tables:
    process_table(table)

在这里,成功打印单元格中可能存在的任何嵌套表格之外的任何文本,处理单元格中的第一个表格(如果有),依此类推。如果您尝试这样做,但仍然收到重复的短信,则一定是另一个问题。 顺便说一句,我认为表格的最大嵌套层数曾经相当小,但似乎可以嵌套至少 20 层,而且我没有看到 Word 文档中提到任何限制,但我会感到惊讶如果任何具有超过极少数嵌套级别的文档无论如何都是可读的。

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