如何用python实现两个文件重复数据筛选并统计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用python实现两个文件重复数据筛选并统计相关的知识,希望对你有一定的参考价值。
文件1:MD5码,名字,IP
文件2:MD5码,ID,名字
我想把两个文件的MD5码做对比,看看文件1的MD5码在第二个文件中是否存在,若存在输出到文件3,然后输出统计总数,请问该怎么做?求大神指导,本人一直用excel,但数据量太大(5000万),想用Python·解决,谢谢!!!!我的分全拿出来悬赏了,希望大家能给代码让我自己运行试试看。久一点无所谓。谢谢
对一个列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],现在我们需要统计这个列表里的重复项,并且重复了几次也要统计出来。
方法1:
?
1234
mylist = [1,2,2,2,2,3,3,3,4,4,4,4]myset = set(mylist) #myset是另外一个列表,里面的内容是mylist里面的无重复 项for item in myset: print("the %d has found %d" %(item,mylist.count(item)))
方法2:
?
123456
List=[1,2,2,2,2,3,3,3,4,4,4,4]a = for i in List: if List.count(i)>1: a[i] = List.count(i)print (a)
利用字典的特性来实现。
方法3:
?
123
>>> from collections import Counter>>> Counter([1,2,2,2,2,3,3,3,4,4,4,4])Counter(1: 5, 2: 3, 3: 2)
这里再增补一个只用列表实现的方法:
?
12345678910
l=[1,4,2,4,2,2,5,2,6,3,3,6,3,6,6,3,3,3,7,8,9,8,7,0,7,1,2,4,7,8,9] count_times = []for i in l : count_times.append(l.count(i)) m = max(count_times)n = l.index(m) print (l[n])
其实现原理就是把列表中的每一个数出现的次数在其对应的位置记录下来,然后用max求出出现次数最多的位置。
只用这段代码的话,有一个缺点,如果有多个结果,最后的现实的结果只是出现在最左边的那一个,不过解决方法也很简单 参考技术A
5000w建议你还是用数据库~如果你打算长久用的话.
单单是下面的代码, 就要好几秒
for i in range(100000000):a = 1
else:
print("ok")
最坏的5000w*5000w=2500000000000000
可能需要几个月的时间...
参考技术B #!/usr/bin/env python3file_ip = 'a.txt'
file_id = 'b.txt'
file_result = 'c.txt'
f2 = set()
with open(file_id) as f:
for line in f.readlines():
s = line.strip()
if s:
md5 = s.split(',')[0]
f2.add(md5)
total = 0
with open(file_ip) as f, open(file_result, 'w') as wf:
for line in f.readlines():
s = line.strip()
if s and s.split('\\n')[0] in f2:
total += 1
wf.write(s)
print('total:', total) 参考技术C
我没看到悬赏分
悬赏分不如RMB有吸引力
以上是关于如何用python实现两个文件重复数据筛选并统计的主要内容,如果未能解决你的问题,请参考以下文章