Python实现删除文本文件中匹配行及后续连续行的问题求助
解决方案
直接修正并补全你的代码,同时解决索引越界、匹配逻辑和文件写入的问题:
def deleteFood(): print('Enter food name') food = input().lower() # 读取文件所有行 with open("FoodList.txt", "r") as f: lines = f.readlines() # 遍历行时预留足够索引空间(要访问i+3,所以最多到len(lines)-4) for i in range(len(lines) - 3): if food in lines[i].lower(): # 统一小写避免大小写匹配误差 print(f'Deleting:\n{lines[i]}{lines[i+1]}{lines[i+2]}{lines[i+3]}Confirm? Y/N') confirmation = input().upper() if confirmation == 'Y': # 一次性删除i到i+3的4行(切片左闭右开,取到i+4) del lines[i:i+4] # 重新写入文件覆盖原内容 with open("FoodList.txt", "w") as f: f.writelines(lines) print("删除成功") return # 处理完成后退出,避免重复匹配 elif confirmation == 'N': print("取消删除") return # 遍历结束未找到匹配项 print("未找到对应食物")
关键调整说明:
- 修复索引越界:原循环
range(len(lines)-1)会导致末尾行访问i+3时超出列表长度,改成range(len(lines)-3)确保有足够后续行可访问。 - 优化匹配逻辑:将文件行内容也转成小写,避免输入和文件内容大小写不一致导致匹配失败。
- 高效删除行:用列表切片
del lines[i:i+4]一次性删除4行,比逐行删除更简洁高效。 - 覆盖写入文件:删除操作完成后,以写入模式打开文件,用
writelines()将修改后的行列表写回原文件。
内容的提问来源于stack exchange,提问作者SohrabFarjami
相关产品推荐
相关产品推荐

