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

如何用Python去除文本文件重复项?解决空格差异误判问题

解决文本文件去重时行内空格数量不同的问题

你的核心需求是:去除文本文件中的重复行,只要行内数字内容相同,不管中间空格数量多少都算重复(比如示例里的1 1和1 1视为重复,只保留一行)。但当前代码因空格处理逻辑混乱,无法正确识别这类重复行,导致写入结果出错。

现有代码的问题

  1. 判断逻辑矛盾:用第一个数字res[0]判断重复,但存入seen的是处理后的整行,会导致只要首数字相同就被误判重复,完全不符合需求。
  2. 空格处理低效且有bug:手动循环处理空格的逻辑只能识别第一个空格,无法适配多空格场景,生成的判断依据不准确。

解决方案代码

核心思路:把每行内容**标准化(统一空格规则)**作为去重判断的依据,但保留原行的空格格式写入文件,兼顾准确性和格式保留。

with open('test1.txt', 'r') as f, open('test3.txt', 'w') as output:
    seen = set()  # 集合查询效率远高于列表,适合去重场景
    for line in f:
        stripped_line = line.strip()
        if not stripped_line:  # 跳过空行,直接写入保留原格式
            output.write(line)
            continue
        # 标准化:用split()自动处理任意多空格,转成元组作为判断键
        unique_key = tuple(stripped_line.split())
        if unique_key not in seen:
            seen.add(unique_key)
            output.write(line)  # 写入原行,保留原始空格格式

代码说明

  • stripped_line.split()会自动把任意数量的空格、制表符等空白字符当成分隔符,比如1 1和1 1分割后都会得到['1', '1'],转成元组('1','1')作为统一的判断依据。
  • 用set存储已见过的标准化键,查询速度更快,避免列表遍历的低效。
  • 空行直接保留写入,不参与去重判断(如果需要空行也去重,可去掉空行判断,将空行的键设为空元组())。
  • 写入时用原行line,完全保留原始的空格格式,解决你之前错误写入的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:49:57