import re
class CountPatt:
def __init__(self,fname):
self.fname = fname
def count_patt(self, patt):
cpatt = re.compile(patt)
patt_dict = {}
with open(self.fname) as fobj:
for line in fobj:
m = cpatt.search(line)
if m:
key = m.group()
patt_dict[key] = patt_dict.get(key, 0) + 1
continue
patt_order = list(patt_dict.items()) 按降序 排出访问量最多的前三
patt_order.sort(key= lambda seq:seq[-1],reverse=True)
print(patt_order[:3])
if __name__ == '__main__':
fname = 'access_log'
ip = '^(\d+\.){3}\d+'
br = 'Chrome|Firefox|MSIE'
cp = CountPatt(fname)
result1 = cp.count_patt( ip)
result2 = cp.count_patt( br)
#print(result1)
#print(result2)