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

使用CSV文件绘制维恩图时出现Python IndexError索引越界问题

错误原因分析
  • 触发IndexError的直接原因:遍历CSV行时,存在部分行经逗号分隔后元素数量不足3,尝试访问row[1]、row[2]时就会超出列表索引范围。常见诱因是CSV末尾存在空行、或者某一行的字段缺失。你贴出的CSV示例内容本身字段是完整的,大概率是文件保存时末尾多了空白行。
  • 额外隐藏逻辑错误:csv.reader读取的所有字段默认是字符串类型,你直接用row[1] == 1做判断,字符串和整数永远不相等,最终会导致两个集合为空,绘图失败。
修复方案
  1. 读取CSV时添加skipinitialspace=True参数,自动去除逗号后的前导空格,避免读取的字段带多余空格
  2. 遍历行时先判断当前行的元素长度是否符合要求,过滤空行和异常行
  3. 将字段转换为整数后再做等值判断

修改后的核心函数代码如下:

def get_Sports(file_name):
    football=[]
    others=[]
    with open(file_name) as file:
        # 添加skipinitialspace去掉分隔符后的前导空格
        reader = csv.reader(file, skipinitialspace=True)
        next(reader)
        for row in reader:
            # 过滤空行和字段不足的异常行,避免索引越界
            if len(row) < 3:
                continue
            # 转成整数再做判断
            if int(row[1]) == 1:
                football.append(row[0])
            if int(row[2]) == 1:
                others.append(row[0])
    return football, others

内容的提问来源于stack exchange,提问作者Jo.skid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:15:09