我陷入了项目的某个部分,需要消除 1.62 亿行长的文件中的重复行。我已经实现了以下脚本(但它没有消除所有重复的行):
lines_seen = set() # holds lines already seen
outfile = open('C:\\Users\\Lucas\\Documents\\Python\\Pagelinks\\pagelinkSample_10K_cleaned11.txt', "w")
for line in open('C:\\Users\\Lucas\\Documents\\Python\\Pagelinks\\pagelinkSample_10K_cleaned10.txt', "r"):
if line not in lines_seen: # not a duplicate
outfile.write(line)
lines_seen.add(line)
outfile.close()
我需要编写一个正则表达式来消除任何重复的行!任何帮助将不胜感激,谢谢!
编辑:我将 1.62 亿行插入 MS SQL 2014。使用批量插入时,它会以错误消息的形式通知我存在重复条目。
也许它不起作用,因为我的方法将“看到的”行存储在内存中,然后不断扫描,并最终因为文件太大而耗尽内存?
最佳答案
如果您的文件有 162M 行,您可能不需要 Python。
您似乎在 Windows 上运行。如果您有 Linux/OSX/*BSD,或安装了 Cygwin,您可以这样做:
cat the_huge_file | sort --unique > file_without_duplicates
在 Windows 上,有一个 sort
shell 实用程序,因此
sort <the_huge_file >sorted_file
应该可以工作,希望以一种节省内存的方式。也许它还有一个删除重复项的开关;请参阅排序/?
如果没有,排序后删除重复行是小菜一碟:逐行读取文件(不是一次读取整个文件),仅使用与前一行不同的行。一个简单的 Python 程序就可以做到这一点。
关于python - 使用Python和正则表达式,查找重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35902103/