有一個(gè)日志文件,要統(tǒng)計(jì)里面每種域名出現(xiàn)的次數(shù)
1.1.1.1 www.baidu.comx
1.1.1.2 www.baidu.com
1.1.1.3 www.baidu.com
1.1.1.1 www.baidu.com
1.1.1.2 www.baidu.com
1.1.1.1 www.baidu.com
1.1.1.2 www.baidu.com
1.1.1.1 www.baidu.com2
1.1.1.2 www.baidu.com2
思路:
1.讀文件,取到數(shù)據(jù)
2.過濾空行
3.把字符串切割成list
4.遍歷list,統(tǒng)計(jì)域名和次數(shù)
5.把結(jié)果寫進(jìn)字典
# 讀文件
f = open("../logs/ip&domain.log", "r", encoding='utf-8')
# 定義一個(gè)空字符串
lines = ''
# 遍歷文件,過濾空行,把不是空行的填進(jìn)字符串里
for line in f:
if line != '\n':
lines = lines + line
# 分割成list
lineList = lines.split('\n')
# print('lineList', lineList)
# 因?yàn)轭}目是要統(tǒng)計(jì)每種域名的請(qǐng)求次數(shù),數(shù)據(jù)結(jié)構(gòu)是key:value形式,所以這里定義一個(gè)字典
dic = {}
# 遍歷list
for content in lineList:
# 1.1.1.1 www.baidu.comx 這種按空格分割
[ip, domain] = content.split(' ')
# 取域名和次數(shù)填進(jìn)字典里,域名為None次數(shù)+0(因?yàn)槌跏蓟臅r(shí)候字典里沒有值),取到了域名 次數(shù)+1
# print('before ', 'domain: ', domain, ' dic[domain]: ', dic.get(domain))
if dict.get(domain) == None:
dict[domain] = 0
else:
dict[domain] += 1
# print('after ', 'domain: ', domain, ' dic[domain]: ', dic.get(domain))
print(dic)
統(tǒng)計(jì)結(jié)果:
{'www.baidu.comx': 1, 'www.baidu.com': 6, 'www.baidu.com2': 2}