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

如何用Python解析列不规范Excel并提取FEED行的filename_pattern值

解决方案

方法一:改进openpyxl代码

你的现有代码仅存储了以行首单元格为key的整行数据,但未定位到filename_pattern列的具体位置。可以分两步实现目标:先找到目标列的索引,再匹配FEED行提取对应值。

from openpyxl import load_workbook

file = "mysheet.xlsx"
wb_obj = load_workbook(filename=file)
wsheet = wb_obj['sheet1']

# 第一步:定位filename_pattern所在的列索引(从0开始计数)
target_col_idx = None
# 若表头不在第一行,可扩大max_row范围(比如max_row=10)遍历前N行找表头
for row in wsheet.iter_rows(max_row=1):
    for idx, cell in enumerate(row):
        if cell.value == 'filename_pattern':
            target_col_idx = idx
            break
    if target_col_idx is not None:
        break

if target_col_idx is None:
    print("未找到filename_pattern列")
else:
    # 第二步:遍历行找到FEED行,提取对应列的值
    target_value = None
    for row in wsheet.iter_rows(min_row=2):
        if row[0].value == 'FEED':
            target_value = row[target_col_idx].value
            break
    print(f"提取到的值:{target_value}")

方法二:用pandas处理(适配格式不规范表格)

pandas对格式混乱的Excel兼容性更强,无需严格依赖行列对齐:

import pandas as pd

file = "mysheet.xlsx"
# 不指定表头,避免自动识别错误导致的匹配失败
df = pd.read_excel(file, sheet_name='sheet1', header=None)

# 找到filename_pattern所在的列
target_col = None
for col in df.columns:
    if 'filename_pattern' in df[col].astype(str).values:
        target_col = col
        break

if target_col is None:
    print("未找到filename_pattern列")
else:
    # 定位FEED行并提取对应值
    feed_row = df[df[0] == 'FEED']
    if not feed_row.empty:
        target_value = feed_row.iloc[0, target_col]
        print(f"提取到的值:{target_value}")
    else:
        print("未找到FEED行")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:35:33