如何在Python函数中消除重复的行?
在本文中,我们将讨论如何在Python中删除多个重复行。如果文件很小且只有几行,可以手动执行从中删除重复行的过程。然而,当处理大文件时,Python可以帮助实现这一目标。
阅读更多:Python 教程
使用文件处理方法
Python具有用于创建、打开和关闭文件的内置方法,这使得处理文件变得更加容易。在文件打开时,Python还可以执行多个文件操作,例如读取、写入和追加数据。
为了从Python文本文件或函数中删除重复行,我们在Python中使用文件处理方法。文本文件或函数必须与包含Python程序的.py文件在同一个目录中。
算法
以下是消除Python函数中重复行的方法
- 由于我们只需要读取此文件的内容,所以首先以只读模式打开输入文件。
-
现在,以写入模式打开输出文件,以将内容写入此文件。
-
逐行读取输入文件,然后检查输出文件,以查看是否将任何类似于此行的行写入其中。
-
如果没有,则将此行添加到输出文件中,并将该行的哈希值保存在集合中。我们将检查每行的哈希值而不是检查和存储整个行。这在处理大文件时更加有效,并且占用的空间更小。
-
如果哈希值已添加到集合中,则跳过该行。
-
完成所有工作后,输出文件将包含输入文件中的每一行,而不是重复的内容。
在此处,输入文件即‘File.txt’包含以下数据:
Welcome to TutorialsPoint.
Welcome to TutorialsPoint.
Python programming language in this file.
eliminate repeated lines.
eliminate repeated lines.
eliminate repeated lines.
Skip the line.
示例
以下是消除Python函数中重复行的示例 –
import hashlib
# 输入文件和输出文件的路径
OutFile = 'C:\Users\Lenovo\Downloads\Work TP\pre.txt'
InFile = r'C:\Users\Lenovo\Downloads\Work TP\File.txt'
# 存储已经出现的行
lines_present = set()
# 以写入模式打开输出文件以在其中写入
The_Output_File = open(OutFile, "w")
# 循环打开文件并将其放入读取模式
for l in open(InFile, "r"):
# 找到当前行的哈希值
# 在执行哈希之前,我们会删除该行末尾的任何空格和换行符。
# 使用hashlib库确定行的哈希值。
hash_value = hashlib.md5(l.rstrip().encode('utf-8')).hexdigest()
if hash_value not in lines_present:
The_Output_File.write(l)
lines_present.add(hash_value)
# 关闭输出文本文件
The_Output_File.close()
输出
我们可以看到以下输出,输入文件中所有重复的行都被消除,输出文件包含如下所示的唯一数据 –
欢迎来到TutorialsPoint。
此文件中的Python编程语言。
消除重复的行。
跳过这一行。
示例
以下是在Python函数中消除重复行的另一个示例 –
#输入文件和输出文件的路径
#以写模式创建输出文件
OutFile = open('C:\Users\Lenovo\Downloads\Work TP\pre.txt', "w")
11
#以读模式创建输入文件
InFile = open('C:\Users\Lenovo\Downloads\Work TP\File.txt', "r")
#保持已经看见的行
lines_present = set()
#迭代文件中的每一行
for l in InFile:
#检查行是否唯一
if l not in lines_present:
#将所有唯一行写入输出文件
OutFile.write(l)
#在lines_present中添加唯一行
lines_present.add(l)
#关闭输出文本文件
OutFile.close()
InFile.close()
输出
我们可以看到以下输出,输入文件中所有重复的行都被消除,输出文件包含如下所示的唯一数据 –
欢迎来到TutorialsPoint。
此文件中的Python编程语言。
消除重复的行。
跳过这一行。