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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:36:19