You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用python-docx正确读取Word文档中的嵌套表格数据?

解决python-docx读取嵌套Word表格时文本重复的问题

问题出在docfile.tables会返回文档中所有层级的表格,包括嵌套在其他表格单元格里的子表格。你的原代码先遍历顶层表格读取单元格文本,接着又会遍历到子表格再次读取其中内容,再加上Word单元格可能存在的重复段落结构,最终导致文本大量重复。

正确的嵌套表格数据提取方案

用递归方式遍历表格,先提取当前单元格的文本,再深入处理单元格内的嵌套表格,确保每个层级的内容只被提取一次:

from docx import Document

def extract_table_data(table, data_list):
    for row in table.rows:
        for cell in row.cells:
            # 提取当前单元格的纯文本(自动排除嵌套表格内容)
            clean_text = cell.text.strip()
            if clean_text:
                data_list.append(clean_text)
            # 递归处理单元格内的嵌套表格
            for sub_table in cell.tables:
                extract_table_data(sub_table, data_list)

# 初始化文档和数据列表
doc = Document("你的文档路径.docx")
extracted_data = []

# 遍历所有顶层表格,递归提取数据
for top_table in doc.tables:
    extract_table_data(top_table, extracted_data)

# 查看结果
print(extracted_data)

额外处理:单元格内文本重复的情况

如果单元格本身存在重复段落导致文本重复,可以先对单元格内的段落文本去重后再提取:

def extract_table_data(table, data_list):
    for row in table.rows:
        for cell in row.cells:
            # 提取单元格中所有非空段落文本,去重后合并
            paragraph_texts = [p.text.strip() for p in cell.paragraphs if p.text.strip()]
            # 保持顺序的去重方式
            unique_texts = list(dict.fromkeys(paragraph_texts))
            if unique_texts:
                data_list.append('\n'.join(unique_texts))
            # 递归处理嵌套表格
            for sub_table in cell.tables:
                extract_table_data(sub_table, data_list)

内容的提问来源于stack exchange,提问作者Janzen Chien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:53:20