📜  python删除文件中的重复行 - Python(1)

📅  最后修改于: 2023-12-03 14:46:42.944000             🧑  作者: Mango

Python删除文件中的重复行

在进行数据处理时,文件中出现重复数据是十分常见的情况。Python提供了一种简便的方式来删除文件中的重复行。下面介绍一种基于哈希表的方法。

核心思路
  1. 读入文件,将每行内容计算哈希值,并将哈希值作为键存储在字典中;
  2. 若当前行的哈希值已经在字典中存在,即说明该行是重复的,直接跳过;
  3. 若当前行的哈希值在字典中不存在,将当前行写入新的文件中,并将哈希值添加到字典中。
代码实现
def remove_duplicate_lines(input_file, output_file):
    hash_dict = {}
    with open(output_file, 'w') as outFile:
        with open(input_file, 'r') as inFile:
            for line in inFile:
                line_hash = hash(line.rstrip())
                if line_hash not in hash_dict:
                    hash_dict[line_hash] = True
                    outFile.write(line)
代码说明
  • remove_duplicate_lines函数接受两个参数,input_file为输入文件名,output_file为输出文件名;
  • 函数首先创建一个空的哈希字典hash_dict
  • with open语句用于打开文件,执行完文件处理后自动关闭文件;
  • for循环中,rstrip()方法用于去除文本行中的换行符等空白字符;
  • hash()函数将文本行转换成哈希值,并将哈希值存储在line_hash变量中;
  • 若当前行的哈希值在字典中不存在,说明当前行不重复,将该行写入输出文件,并将哈希值添加到字典中;
  • 若当前行的哈希值在字典中已经存在,说明当前行重复,直接跳过该行。
使用方法

将上述代码保存到一个Python文件中,如remove_duplicate_lines.py,然后在命令行中运行以下命令:

python remove_duplicate_lines.py input_file.txt output_file.txt

其中,input_file.txt为输入文件名,output_file.txt为输出文件名。运行后,重复行会被删除,新的文件会生成在同一目录下。