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

多记事本文件块级文本比对:以首文件为基准去重保留独有内容

文本块级去重实现方案

核心处理逻辑:

  • 以第1个文件为比对基准,按空行把文件内容拆分为独立文本块,对块内容做归一化处理(忽略块整体、块内每行的前后缩进/空白)后存入去重集合
  • 分别读取另外2个待处理文件,用同样的规则拆分文本块,逐块做归一化后和基准集合比对,剔除和基准内容完全一致的重复块
  • 剩余的独有内容块保留原有格式,块之间用空行分隔,输出为新的结果文件

实现代码

把以下代码保存为.py后缀的脚本文件,和3个记事本放在同一目录下运行即可:

def load_and_parse(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()
    # 按连续空行拆分原始块,过滤空内容
    raw_blocks = [block.strip() for block in content.split('\n\n') if block.strip()]
    # 生成归一化块集合:去掉每行前后空白,消除缩进差异影响
    normalized_blocks = set()
    for block in raw_blocks:
        norm_lines = [line.strip() for line in block.split('\n')]
        normalized_blocks.add('\n'.join(norm_lines))
    return raw_blocks, normalized_blocks

if __name__ == '__main__':
    # 加载基准文件,文件名可根据实际情况修改
    _, base_blocks = load_and_parse('file1.txt')

    # 处理第2个文件
    f2_raw, _ = load_and_parse('file2.txt')
    f2_result = []
    for block in f2_raw:
        norm_block = '\n'.join(line.strip() for line in block.split('\n'))
        if norm_block not in base_blocks:
            f2_result.append(block)
    with open('file2_processed.txt', 'w', encoding='utf-8') as f:
        f.write('\n\n'.join(f2_result))

    # 处理第3个文件
    f3_raw, _ = load_and_parse('file3.txt')
    f3_result = []
    for block in f3_raw:
        norm_block = '\n'.join(line.strip() for line in block.split('\n'))
        if norm_block not in base_blocks:
            f3_result.append(block)
    with open('file3_processed.txt', 'w', encoding='utf-8') as f:
        f.write('\n\n'.join(f3_result))

使用说明

  • 运行前确认3个源文件的文件名和代码中填写的路径一致,默认基准文件名为file1.txt,两个待处理文件名为file2.txt、file3.txt,文件名不同直接修改代码中对应字符串即可
  • 脚本运行后会在同目录生成file2_processed.txt、file3_processed.txt,就是剔除重复块后的结果文件
  • 比对规则只会忽略无意义的前后缩进、空白,只要块内实际文本内容有差异(比如示例中文件3的邮箱地址和基准不同)就不会被误删,完全匹配示例给出的预期输出效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:01:06