如何用python实现两个文件重复数据筛选并统计

文件1:MD5码,名字,IP文件2:MD5码,ID,名字我想把两个文件的MD5码做对比,看看文件1的MD5码在第二个文件中是否存在,若存在输出到文件3,然后输出统计总数,... 文件1:MD5码,名字,IP
文件2:MD5码,ID,名字
我想把两个文件的MD5码做对比,看看文件1的MD5码在第二个文件中是否存在,若存在输出到文件3,然后输出统计总数,请问该怎么做?求大神指导,本人一直用excel,但数据量太大(5000万),想用Python·解决,谢谢!!!!我的分全拿出来悬赏了,希望大家能给代码让我自己运行试试看。久一点无所谓。谢谢
展开
 我来答
从空去听8
2017-11-14 · TA获得超过7439个赞
知道大有可为答主
回答量:6907
采纳率:93%
帮助的人:5573万
展开全部
本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合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求出出现次数最多的位置。
只用这段代码的话,有一个缺点,如果有多个结果,最后的现实的结果只是出现在最左边的那一个,不过解决方法也很简单
tufeididi007
2017-10-09 · TA获得超过2125个赞
知道大有可为答主
回答量:2698
采纳率:76%
帮助的人:1247万
展开全部

5000w建议你还是用数据库~如果你打算长久用的话.

单单是下面的代码, 就要好几秒

for i in range(100000000):
a = 1
else:
print("ok")

最坏的5000w*5000w=2500000000000000

可能需要几个月的时间...

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wenjie1024
2017-11-12 · TA获得超过2381个赞
知道大有可为答主
回答量:1737
采纳率:72%
帮助的人:856万
展开全部
#!/usr/bin/env python3

file_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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mieyoubeizhuce
2015-11-17 · TA获得超过610个赞
知道小有建树答主
回答量:733
采纳率:100%
帮助的人:473万
展开全部
  1. 我没看到悬赏分

  2. 悬赏分不如RMB有吸引力

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式