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

Python line.split方法运行报IndexError列表索引越界问题求助

错误原因

触发num2相关IndexError的核心问题有两处:

  1. 多余的内层遍历逻辑:执行resplit = itemInfo[1].strip()后,得到的是类似(15.75,10.0,44.0)的完整字符串,你写for line in resplit时,实际是在逐字符遍历这个字符串,每次循环拿到的line是单个字符(比如(、1、.这类),并非带逗号的完整数值段。
  2. 单个字符调用split(",")只会返回长度为1的列表,此时访问索引为1的split[1]必然触发索引越界错误。

另外原逻辑也没有处理数值段外层的括号,就算删掉内层循环直接分割,拿到的数值也会残留括号字符,不符合拆分要求。

修正后代码

你要拆分的4个部分分别是菜品名、三个数值,不需要内层循环,先去除数值段外层括号再按逗号分割即可,对应实现如下:

item = [
"Ham and Egg Sandwich $(15.75,10.0,44.0)",
"Bacon and Cheese Plate $(9.5,3.0,50.0)",
'Tuna Salad $(12.3,4.0,20.0)',
'Beef Soup $(9.0,2.0,30.0)',
'Spicy Beef Barbeque $(20.0,18.0,20.0)',
'Pork Barbeque $(18.0,12.0,35.0)',
'Oven Chicken Barbeque $(15.0,9.0,50.0)',
'Pulled Beef Barbeque Burger $(25.0,20.0,35.0)',
'House Salad $(5.0,2.5,46.0)',
'Pellegrino $(5.4,3.0,60.0)',
'White Wine $(7.5,5.0,40.0)',
'Red Wine $(11.0,4.0,71.0)'
 ]

# 初始化4个独立列表存储拆分结果
item_names = []
price_list = []
param1_list = []
param2_list = []

for line in item:
    # 按$分割菜品名和数值段
    name_part, num_str_part = line.split("$")
    item_name = name_part.strip()
    # 去除数值段外层括号,按逗号拆分三个数值
    num1, num2, num3 = [seg.strip() for seg in num_str_part.strip().strip("()").split(",")]
    # 分别存入对应列表
    item_names.append(item_name)
    price_list.append(num1)
    param1_list.append(num2)
    param2_list.append(num3)
关键修改点
  • 删除了错误的内层字符遍历逻辑,直接对完整数值段做分割处理
  • 新增了括号去除逻辑,避免数值残留无效字符
  • 提前初始化4个独立列表,拆分后直接追加存储,匹配最初的拆分需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:27:29