我的脚本从具有用户日志历史记录的文件(syslog.txt)中读取,解析文件中的每个日志条目,并创建2个字典(错误,per_user)以显示给定错误发生了多少个实例,以及每个用户获得的INFO或ERROR实例的数量。一切正常,直到这里。代码似乎可以正常工作。问题在于输出是2个列表,而不是2个字典。我不知道为什么。预先非常感谢。
这是脚本:
import re
import operator
per_user = {}
error = {}
with open("syslog.txt") as f:
content = f.readlines()
for i in content:
if "ERROR" in i:
result_error = re.search(r"ERROR ([\w\' ]+) [^\w]",i)
if not result_error.group(1) in error:
error[result_error.group(1)] = 1
else:
error[result_error.group(1)] += 1
result_user = re.search(r"(INFO|ERROR).*\(([\w\.]+)\)",i)
if not result_user.group(2) in per_user:
per_user[result_user.group(2)] = dict()
if not result_user.group(1) in per_user[result_user.group(2)]:
per_user[result_user.group(2)][result_user.group(1)] = 1
else:
per_user[result_user.group(2)][result_user.group(1)] += 1
error = sorted(error.items(), key=operator.itemgetter(1), reverse=True)
per_user = sorted(per_user.items(), key=operator.itemgetter(0))
print(type(error))
print(type(per_user))
下面是输出:
<class 'list'>
<class 'list'>
答案 0 :(得分:1)
答案 1 :(得分:1)
注意:
sorted(iterable)
:返回一个包含所有来自可迭代项的新列表
如果您想要dictionary
,
尝试一下:
error = dict(error)
per_user = dict(per_user)