Python根据用户输入搜索txt文件输出对应目的地遇索引越界问题
问题解决
错误原因
- 语法错误:原有代码最后一行
print ([data[1])多写了一个左方括号,会触发语法报错 - 字段匹配问题:每行按逗号分割后,各字段前后带有多余空格,会导致用户输入的纯文本无法正常匹配
- 索引越界触发原因:如果文件中存在空行、或者格式不符合4字段规范的异常行,分割后得到的列表长度不足2,访问
data[0]/data[1]时就会触发索引越界错误 - 文件资源未手动释放,存在资源泄漏风险
修复后代码
search = input('Please enter the name or ID number of the destination:\n').strip() # 使用上下文管理器自动处理文件关闭 with open('destinations.txt', 'r', encoding='utf-8') as f: info = f.readlines() is_found = False for line in info: line = line.strip() # 跳过空行 if not line: continue # 分割后对每个字段去除前后空白 data = [item.strip() for item in line.split(',')] # 跳过字段数不足的异常行,避免索引越界 if len(data) < 2: continue if search == data[0]: print(data[1]) is_found = True break elif search == data[1]: print(data[1]) is_found = True break if not is_found: print('未查询到匹配的目的地信息')
代码说明
- 新增空行、异常格式行过滤逻辑,从根源避免索引越界问题
- 对所有分割后的字段做去空白处理,解决空格导致的匹配失败问题
- 修正原有语法错误,优化匹配逻辑,匹配成功后直接终止遍历减少性能消耗
- 新增未匹配提示,提升交互体验
内容的提问来源于stack exchange,提问作者Kangar
相关产品推荐
相关产品推荐

