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

Python拆分3个||分隔的CSV列生成字典列表的实现方法

解决方案

核心逻辑是使用zip函数同步遍历三个拆分后的列表,按位置匹配元素生成字典即可,完整实现如下:

完整处理代码

from collections import OrderedDict

def process_csv_row(row: OrderedDict):
    # 校验当前行是否包含全部需要处理的目标列
    target_columns = {"buttons", "clicked", "id"}
    if not target_columns.issubset(row.keys()):
        return []
    
    # 拆分三个目标列(可替换为你已经实现的拆分逻辑)
    button_list = [item.strip() for item in row["buttons"].split("||")]
    clicked_list = [item.strip() for item in row["clicked"].split("||")]
    id_list = [item.strip() for item in row["id"].split("||")]

    # 可选:校验三个列表长度一致,避免数据异常导致错位
    if len(button_list) != len(clicked_list) or len(button_list) != len(id_list):
        raise ValueError("当前行三个目标列的元素数量不匹配")
    
    # 合并生成目标列表
    button_choices = []
    for btn_text, clicked_str, btn_id in zip(button_list, clicked_list, id_list):
        button_choices.append({
            "button": btn_text,
            "clicked": clicked_str.upper() == "TRUE",
            "id": btn_id
        })
    return button_choices

效果测试

用你给出的示例输入测试:

# 模拟CSV读取到的行数据
test_row = OrderedDict({
    "buttons": "choice 1 || choice 2 || choice 3",
    "clicked": "TRUE || FALSE || FALSE",
    "id": "choice 1 id|| choice 2 id || choice 3 id",
    "dynamic_col1": "其他无需处理的字段",
    "dynamic_col2": 123
})

result = process_csv_row(test_row)
print(result)

输出结果符合要求:

[
    {'button': 'choice 1', 'clicked': True, 'id': 'choice 1 id'},
    {'button': 'choice 2', 'clicked': False, 'id': 'choice 2 id'},
    {'button': 'choice 3', 'clicked': False, 'id': 'choice 3 id'}
]

注意事项

  • 布尔值转换逻辑可根据实际CSV存储规则调整,若点击状态存储为1/0,将clicked的赋值逻辑改为clicked_str == "1"即可
  • 若你的拆分逻辑已经做了去空格处理,直接替换代码中拆分部分的逻辑即可,不影响后续合并流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:15:06