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

如何读取CSV文件列值并遍历 修复TypeError列表索引报错

报错原因
  • csv.reader 迭代返回的每一行是列表类型,仅支持整数/切片索引,直接用字符串'Date'作为索引取值就会触发你遇到的TypeError: list indices must be integer or slices,not str。
  • 你的CSV文件使用单引号包裹字段,csv模块默认以双引号作为字段包裹识别符,不额外配置会导致解析出的字段残留多余单引号。
  • 目标Date列的单元格内是逗号分隔的多组数字,直接读取只能拿到完整字符串,需要额外做拆分、类型转换、展平才能得到你要的一维数字列表。
修正后可直接运行的代码
import csv

# 替换为你的CSV文件实际路径
Filepath = "your_file.csv"
date_result = []
# 预定义后续需要的Category、Ability独立存储字典
category_map = {}
ability_map = {}

with open(Filepath, 'r', newline='', encoding='utf-8') as f:
    # 指定单引号为字段包裹符,用DictReader直接通过列名取值
    csv_reader = csv.DictReader(f, quotechar="'")
    for row in csv_reader:
        # 处理Date列:拆分字符串、转整数、追加到结果列表
        date_items = [int(num.strip()) for num in row['Date'].split(',')]
        date_result.extend(date_items)
        
        # 同步构建Category、Ability字典,以下以行序号为键示例,可按需调整键规则
        row_id = csv_reader.line_num - 2  # 偏移量扣除表头行计数
        category_map[row_id] = row['Category'].strip()
        ability_map[row_id] = [item.strip() for item in row['Ability'].split(',')]

print(date_result)

运行以上代码,date_result的输出就是你期望的:

[21, 2, 5, 4, 5, 6]
扩展说明

代码中已经预留了category_map和ability_map两个独立字典的构建逻辑,如果你需要调整字典的键(比如用Date值作为键、用Category名称作为键),直接修改row_id部分的取值规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:45:14