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

如何按指定列标题批量从Word文档中提取目标表格?

修改后的代码方案

以下是针对需求优化后的代码,能够自动识别包含指定表头的表格,不再依赖固定索引:

import pandas as pd
from docx.api import Document
import os

# 定义需要匹配的目标表头集合
TARGET_HEADERS = {'CONTACT NAME', 'POSITION', 'LOCATION', 'EMAIL', 'TELEPHONE', 'ASSET CLASS'}

path = 'C:\\Users\\user1\\test'
os.chdir(path)

data = []    

for filename in os.listdir(path):
    # 只处理docx格式的Word文档
    if not filename.endswith('.docx'):
        continue
    
    try:
        doc = Document(os.path.join(path, filename))
        target_table = None
        
        # 遍历当前文档的所有表格,寻找符合条件的目标表格
        for table in doc.tables:
            # 提取表格第一行的表头文本,去除空格并统一大写(避免大小写或空格差异)
            header_texts = [cell.text.strip().upper() for cell in table.rows[0].cells]
            header_set = set(header_texts)
            
            # 检查当前表格是否包含所有目标表头
            if TARGET_HEADERS.issubset(header_set):
                target_table = table
                break
        
        if target_table:
            # 提取表格数据,跳过表头行(从第二行开始)
            for row in target_table.rows[1:]:
                row_data = [cell.text.strip() for cell in row.cells]
                data.append(row_data)
        else:
            print(f"文件 {filename} 未找到目标表格")
    
    except Exception as e:
        print(f"处理文件 {filename} 时出错: {str(e)}")

# 将提取的数据转为DataFrame,指定列名
df = pd.DataFrame(data, columns=list(TARGET_HEADERS))
print(df)
# 可选:将结果保存到Excel文件
# df.to_excel('提取结果.xlsx', index=False)

关键修改说明

  • 动态识别表格:不再固定取第8个表格,改为遍历文档内所有表格,通过比对表头集合确定目标表格,解决表格位置不固定的问题。
  • 表头容错处理:对表头文本做了去空格、统一大写的处理,避免因文档中表头大小写不一致、带空格导致的匹配失败。
  • 异常防护:添加了异常捕获机制,单个文档处理出错不会中断整个批量任务,同时打印错误信息方便排查。
  • 数据过滤:只处理.docx格式文件,避免非Word文档干扰;提取数据时跳过表头行,避免表头混入结果数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:06:07