用户:
tq_xyy查看:0 回复:0 评论:0 创建时间:2020-10-18T12:48:50
【作品展示】

【作品介绍】
使用了stream.py, 链接https ://github.com/喵/Stream.py
【作品源代码】
import re
from stream import *
with open('nginx.log', 'r') as f:
result = (f.stream()
.map(lambda s: re.match(r'^(\d+.\d+.\d+.\d+) - - \[([\d\s\W\w]+)\] "(\w+?) ([\W\w]+?) ([\/\d\w\.]+?)" (\d+) (\d+) "([\w\W]+?)" "(.*?)"', s))
.filter(None)
.map(lambda m: m.groups())
.map(lambda s: (s[0], re.match(r'(\d+)/([\W\w]+?)/(\d+):(\d+):(\d+):(\d+)\s([\+\d]+)', s[1]).groups(), *s[2:]))
.map(lambda t: (t[0], {'year': t[1][2], 'month': t[1][1], 'day': t[1][0], 'time': t[1][3:-1], 'local': t[1][-1]}, *t[2:]))
.map(lambda t: (t[0], t[1], {'method': t[2], 'path': t[3], 'protocol': t[4], 'code': t[5], 'length': t[6], 'referer': t[7]}, *t[8:]))
.map(lambda t: (*t[:3], t[3] if len(t[3]) <= 42 else t[3][:42] + '...'))
.collect(Collectors.mapping(lambda t: {'ip': t[0], 'time': t[1], 'request': t[2], 'http-user-agent': t[3]}, tuple))
)
# for item in result:
# print(item)
from json import dumps
print(dumps(result, indent=4))
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn