python - 使用Python和正则表达式,查找重复行

标签 python regex

我陷入了项目的某个部分,需要消除 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/

相关文章:

Python3 @Property.setter 和 Object 没有属性

python - 使用 Selenium : How to keep logged in after closing Driver in Python

PHP 正则表达式和 CSV 验证

java - 正则表达式模式不会匹配任何内容

javascript - 正则表达式,用逗号分隔,javascript

Python 函数在类定义之外赋值会导致参数异常

python - Saltstack 通过事件和 salt-call 管理和查询理货/阈值?

Python序列化错误

c++ - PCRE中的匹配顺序

regex - 这个正则表达式是什么意思? [a-zA-Z]|\d