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

如何用Python移除文本文件中含3个及以上相同单词的相似重复行?

实现移除含3个及以上匹配单词的相似重复行

要解决这个问题,咱们不能再只对比整行内容了,得改成基于单词交集数量来判断是否属于相似重复。核心思路很清晰:

  • 把每一行拆成单词集合(用集合是因为咱们只关心单词是否存在,不纠结顺序和重复)
  • 对每一行,检查它和所有已保留行的单词交集长度,如果有任意一个交集≥3,就跳过这行;否则保留它,并把它的单词集合存起来方便后续对比

下面是修改后的可运行代码:

def remove_similar_duplicates(input_file, output_file, threshold=3):
    # 存储已保留行的单词集合+原行内容(保证写入格式和原文件一致)
    kept_lines = []
    with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
        for line in infile:
            # 处理行首尾空白,拆分单词(自动忽略多余空格)
            current_words = set(line.strip().split())
            # 标记当前行是否是相似重复
            is_similar_duplicate = False
            # 遍历所有已保留行,逐一检查相似度
            for stored_words, _ in kept_lines:
                common_words = stored_words & current_words
                if len(common_words) >= threshold:
                    is_similar_duplicate = True
                    break
            if not is_similar_duplicate:
                # 不是相似重复,写入文件并记录到已保留列表
                outfile.write(line)
                kept_lines.append((current_words, line))

# 调用函数处理你的文件
remove_similar_duplicates("file.txt", "out.txt")

细节说明:

  • kept_lines存了两个信息:已保留行的单词集合,以及原行的原始内容,这样既能快速对比相似度,又能保证输出和原文件格式完全一致
  • current_words = set(line.strip().split()):先去掉行首尾的换行符和空格,再按空白拆分单词转成集合,自动处理了行内多空格的情况
  • 只要当前行和任意一行已保留行的共同单词数达到阈值(默认3),就判定为相似重复直接跳过

用你给出的示例输入测试:

The apple is red
The apple red
The banana is yellow
The apple is red

最终输出会是:

The apple is red
The banana is yellow

完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:47:15