我有一个很长的文本文件(2GB),我使用以下方法删除了重复文件:
sort -u filename > outfile1
和
>>> data = open('filename', 'r').readlines()
>>> u = list(set(data))
>>> open('outfile2', 'w').writelines(u)
然而,两个文件outfile2和outfile1具有不同数量的条目:
wc -l outfile?
185866729 filename
109608242 outfile1
109611085 outfile2
这怎么可能?
更新。 按照查看数据的请求,我发现python将删除重复条目,如:
låsningernes
læsningernes
løsningernes
有效地在sort -u
中忽略第二个字符,并且仅保留第一个条目。相反,Python可以很好地区分这三个记录。
答案 0 :(得分:3)
没有看到实际输出(或者至少是'额外'线,我们只能猜测。
但是它会归结为sort
完成了多少预处理,它发现了比set()
更多的重复项。
可能的原因可能是
sort
删除,但不会被set
删除。答案 1 :(得分:0)
如果您将它们组合并将它们创建为列表,则可以执行此操作:
non_duplicates= [a for i,a in enumerate(l) if i == l.index(a)]
这也保持了它所包含的项目的顺序