处理循环输入后输出,看代码注释。
import sys import re from collections import defaultdict dic = defaultdict(int)#创建默认字典,默认值为整数0 for s in sys.stdin:#循环输入字符串 s = re.split(r'[\s\\]',s.strip())#利用正则分割当前字符串 if len(s[-2])>16:#如果文件名大于16位字符,则只保留最后16位字符 s[-2]=s[-2][-16:] s = ' '.join(s[-2:])#文件名、错误行号合并 dic[s] += 1#存储到字典中 if len(dic)>8:#如果错误信息大于8条,则只输出最后8条 for k in list(dic.keys())[-8:]: print(f'{k} {dic[k]}') else:#错误信息小雨8条,全部输出 for k in dic.keys(): print(f'{k} {dic[k]}')