for循环使用split生成嵌套列表,如何获取单层列表并正确索引取值?
Python for循环split生成嵌套列表问题修复方案
根因分析
- 代码中使用
append()方法添加split()的返回结果:append()会把拆分得到的列表整体作为单个元素存入new_list,最终生成嵌套列表结构。从运行输出[['1111', 'zoki', '2', '3', '1\n']]可看出new_list仅有1个元素,访问索引1直接触发越界错误。 - 写的
(line.strip())没有赋值给变量,没有实际生效,拆分后的最后一个元素还残留换行符\n。
修复方法
如果要得到单层列表、直接通过索引访问字段,将append()替换为extend()即可:extend()会遍历拆分得到的列表,把每个元素逐个添加到new_list中,不会生成嵌套结构。
修正后代码
def get_info(): # 使用with上下文管理打开文件,自动处理文件关闭,避免资源泄漏 with open('lol.txt', 'r', encoding='utf-8') as infile: f = infile.readlines() id = input('enter your id:') new_list = [] for line in f: # 先去除首尾空白、换行符,再拆分 line_parts = line.strip().split(':') if line_parts[0] == id: # 用extend平铺元素,生成单层列表 new_list.extend(line_parts) print(new_list) # 提前判断索引有效性,避免无匹配时报错 if len(new_list) > 1: print(new_list[1]) else: print("未匹配到对应ID或匹配结果字段不足") get_info()
运行效果
输入ID为1111时,输出的new_list为['1111', 'zoki', '2', '3', '1'],调用new_list[1]可正常得到结果zoki。
内容的提问来源于stack exchange,提问作者loli loli
相关产品推荐
相关产品推荐

