Python高效对比中文文件提取重复内容

在处理文本数据时,经常需要对比两个文件,找出其中重复的部分。本文将介绍如何使用Python的difflib模块高效地完成这项任务,并提供详细的代码示例和解释。

代码实现

import difflib

def compare_files(file1, file2):
    # 读取文件内容
    with open(file1, 'r', encoding='utf-8') as f1, open(file2, 'r', encoding='utf-8') as f2:
        text1 = f1.readlines()
        text2 = f2.readlines()

    # 比较文件内容
    diff = difflib.SequenceMatcher(None, text1, text2)
    matching_blocks = diff.get_matching_blocks()

    # 提取重复部分
    duplicates = []
    for block in matching_blocks:
        if block.size > 0:
            duplicate_lines = text1[block.a:block.a+block.size]
            duplicates.extend(duplicate_lines)

    # 将重复部分写入新文件
    with open('duplicates.txt', 'w', encoding='utf-8') as f:
        f.writelines(duplicates)

# 示例用法
compare_files('file1.txt', 'file2.txt')

代码解析

  1. 导入difflib模块: import difflib
  2. 定义compare_files函数: 该函数接收两个文件路径作为参数。
  3. 读取文件内容: 使用with open()语句打开文件,并使用readlines()方法将文件内容读取到列表中,每个元素代表一行文本。
  4. 使用difflib.SequenceMatcher比较内容: 创建SequenceMatcher对象,并调用get_matching_blocks()方法获取匹配的文本块信息。
  5. 提取重复部分: 遍历匹配块列表,根据块信息从原始文本中提取重复行,并将它们添加到duplicates列表中。
  6. 将重复内容写入新文件: 打开一个新文件'duplicates.txt',将提取到的重复行写入该文件。
  7. 调用函数进行文件对比: 传入要对比的两个文件路径。

注意事项

  • 确保文件编码正确,代码中默认为UTF-8,如需修改,请更改encoding参数。
  • 该代码将所有重复的行保存到新文件,如需对输出格式进行自定义,可修改代码中写入文件的逻辑。

希望本文能帮助您快速使用Python对比中文文件并提取重复内容!

Python高效对比中文文件提取重复内容

原文地址: https://www.cveoy.top/t/topic/fCew 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录