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

Python 3.7如何删除txt文件中开头重复的行且无需安装额外模块

报错原因

  • 遍历lines列表的过程中直接执行del lines[i]删除元素,会导致列表实际长度持续变短,但循环用的是最初lines[:-1]的索引范围,删除若干元素后,i+1就会超出当前lines的实际长度,触发索引越界错误。
  • 代码还存在两个额外问题:1. 缩进错误,for循环的缩进层级超过了上方的lines赋值行;2. 没有提前打开final_file对应的输出文件对象,直接调用write方法会报错。

修复后的可运行代码

完全基于Python标准库实现,不需要安装任何第三方模块,兼容Python 3.7版本:

with open("resultFile.txt", "r") as result_file, open("final_result.txt", "w") as final_file:
    # 用字典存储每个测试项的最后一次结果,Python 3.7+字典默认保留插入顺序
    test_result = {}
    for line in result_file:
        # 跳过空行
        if not line.strip():
            continue
        # 提取测试名作为key,maxsplit=1避免行内空格影响拆分
        test_name = line.split(maxsplit=1)[0]
        # 重复的测试名直接覆盖,最终保留的就是最后一次出现的结果
        test_result[test_name] = line
    # 按测试项出现顺序写入最终结果
    for line in test_result.values():
        final_file.write(line)

优化建议

  • 不要在遍历列表的同时修改列表长度,极容易出现索引异常,用字典存储的方案逻辑更简单,也不需要提前把所有行读到内存中,即使是超大的结果文件也能正常运行。
  • 提取前缀时保留maxsplit=1的参数,可以避免行内容里有空格时拆分出错。
  • 增加空行判断逻辑,可以避免源文件里的空行、全空格行被当成有效内容处理。

内容的提问来源于stack exchange,提问作者ComradeH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:00:01