这种东西最好都用numpy这样的统计包来搞。不过看来是比较简单,行数也不多,就算了。看在精氨酸的份上写一下。
import re,mathpatch = {}
QA = {}
num = {}
with open("test.txt") as A:
for eachline in A:
eachline = eachline.rstrip()
m = re.search("^(PATCH\s+\d+).*?Q*A\:(.*?)\s",eachline)
if m :
name = m.group(1)
QA[name] = float(m.group(2))
patch[name] = 0
num[name] = 0
else:
patch[name]+=math.log(float(eachline.split(" ")[1]),2)
num[name]+=1
result = {i:j/num[i]+QA[i] for i,j in patch.items()}
for i,j in sorted(result.items(),key = lambda d:d[1], reverse=True):
print i,j
A.close()
推荐你去找一个pandas,scipy,pandas,matplotlib库来做,网上有书籍,《利用Python进行数据分析》,基本就是介绍这样内容的,pandas去做数据采集、清洗等都不错,然后利用上面的例子慢慢实现你上面的方法。