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

如何读取单元格含多个值的CSV并转换为带列表的字典

解决方案

错误原因

  • 原代码的核心问题是直接用split(",")拆分CSV整行:CSV规范中双引号包裹的字段内部的逗号不属于分隔符,手动拆分就会把带引号的内容拆碎,导致字段整体错位,和表头对应不上。
  • 缺少对空值、单元格内多值的转换逻辑。

修复后代码

import csv

csv_dict = {}
with open(csv_file, 'r', newline='', encoding='utf-8') as f:
    # 用csv模块自带的DictReader直接读取,自动处理表头和带引号的字段
    reader = csv.DictReader(f)
    for row in reader:
        type_key = row.pop('Type')
        processed_row = {}
        for field, value in row.items():
            value = value.strip()
            if not value:
                # 空单元格赋值为空列表
                processed_row[field] = []
            elif ',' in value:
                # 单元格内有多个逗号分隔的值,拆分后存列表,每个元素去除首尾空格
                processed_row[field] = [item.strip() for item in value.split(',')]
                # 若不需要拆分多值,仅要把整个内容作为列表单个元素,替换为下行代码即可
                # processed_row[field] = [value]
            else:
                # 单个值保留字符串格式,若要统一存列表可改为 processed_row[field] = [value]
                processed_row[field] = value
        if type_key not in csv_dict:
            csv_dict[type_key] = []
        csv_dict[type_key].append(processed_row)

运行结果

执行后打印csv_dict['TypeB'][0]的输出和需求完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:24:03