【发布时间】:2017-05-06 03:41:46
【问题描述】:
我有一个非常大的文本文件,其中包含要消除的重复条目。我不关心条目的顺序,因为文件稍后会被排序。
这是我目前所拥有的:
unique_lines = set()
outfile = open("UniqueMasterList.txt", "w", encoding = "latin-1")
with open("MasterList.txt", "r", encoding = "latin-1") as infile:
for line in infile:
if line not in unique_lines:
outfile.write(line)
unique_lines.add(line)
outfile.close()
已经运行了 30 分钟,还没有结束。我需要它更快。 在 Python 中有什么更快的方法?
【问题讨论】:
-
我只会使用
sort -u -o UniqueMasterList.txt MasterList.txt而不是编写任何自定义代码。 -
为什么不先排序呢?那么删除重复项就很容易了。
-
与您的问题无关,但您无需关闭
infile,因为您使用with关键字打开它。 -
当你说“非常大的文件”时,有多大?它有可能适合记忆吗?我想是这样,因为如果不是,
set会变得太大。如果您运行的是 64 位版本的 Python,它可能会进行交换,这肯定会使其太慢。
标签: python python-3.x text duplicates