有一个日志文件,要统计里面每种域名出现的次数
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.读文件,取到数据
2.过滤空行
3.把字符串切割成list
4.遍历list,统计域名和次数
5.把结果写进字典
# 读文件
f = open("../logs/ip&domain.log", "r", encoding='utf-8')
# 定义一个空字符串
lines = ''
# 遍历文件,过滤空行,把不是空行的填进字符串里
for line in f:
if line != '\n':
lines = lines + line
# 分割成list
lineList = lines.split('\n')
# print('lineList', lineList)
# 因为题目是要统计每种域名的请求次数,数据结构是key:value形式,所以这里定义一个字典
dic = {}
# 遍历list
for content in lineList:
# 1.1.1.1 www.baidu.comx 这种按空格分割
[ip, domain] = content.split(' ')
# 取域名和次数填进字典里,域名为None次数+0(因为初始化的时候字典里没有值),取到了域名 次数+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)
统计结果:
{'www.baidu.comx': 1, 'www.baidu.com': 6, 'www.baidu.com2': 2}