如何修复Python IndexError: string index out of range报错
IndexError问题修复说明
错误根源
代码报错是因为i遍历到字符串最后一个字符时,i取值为len(str)-1,此时访问str[i+1]的索引超出了字符串的合法取值范围(字符串索引从0开始,最大为len(str)-1)。同时原有逻辑还有隐藏问题:如果连续数字位于字符串末尾,无法正常加入结果列表。
修复后代码(兼容原有逻辑)
def get_int_arr(str): int_arr = [] num_str = "" for i in range(len(str)): if str[i].isnumeric(): num_str += str[i] # 先判断是否已经到字符串末尾,再判断下一位是否为非数字 if i == len(str) - 1 or not str[i+1].isnumeric(): int_arr.append(num_str) num_str = "" return int_arr print(get_int_arr("data 48 call 9 read13 blank0"))
运行后输出为:['48', '9', '13', '0'],符合提取需求。如果需要返回整数数组,将int_arr.append(num_str)修改为int_arr.append(int(num_str))即可。
更简洁的实现方案
可以直接用Python正则表达式模块提取连续数字,无需手动处理边界逻辑:
import re def get_int_arr(str): return re.findall(r'\d+', str) print(get_int_arr("data 48 call 9 read13 blank0"))
内容的提问来源于stack exchange,提问作者QA Engineer
相关产品推荐
相关产品推荐

