Python高效对比中文文件提取重复内容
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')
代码解析
- 导入
difflib模块:import difflib - 定义
compare_files函数: 该函数接收两个文件路径作为参数。 - 读取文件内容: 使用
with open()语句打开文件,并使用readlines()方法将文件内容读取到列表中,每个元素代表一行文本。 - 使用
difflib.SequenceMatcher比较内容: 创建SequenceMatcher对象,并调用get_matching_blocks()方法获取匹配的文本块信息。 - 提取重复部分: 遍历匹配块列表,根据块信息从原始文本中提取重复行,并将它们添加到
duplicates列表中。 - 将重复内容写入新文件: 打开一个新文件'duplicates.txt',将提取到的重复行写入该文件。
- 调用函数进行文件对比: 传入要对比的两个文件路径。
注意事项
- 确保文件编码正确,代码中默认为UTF-8,如需修改,请更改
encoding参数。 - 该代码将所有重复的行保存到新文件,如需对输出格式进行自定义,可修改代码中写入文件的逻辑。
希望本文能帮助您快速使用Python对比中文文件并提取重复内容!
原文地址: https://www.cveoy.top/t/topic/fCew 著作权归作者所有。请勿转载和采集!