您的位置:首页 > 编程语言 > Python开发

用ipython将日志转化为字典的形式

2014-08-07 15:52 169 查看
安装ipython在这里我们就不说了,现在简单的分享一下如用正则将日志转换成字典

先在ipython里导入正则模块

import re

例如:有这样一条日志

a = 'Jul 28 03:10:18 localhost abrt detected unhandled Python exception in 1check_log.py'

设定一个正则匹配规则

re_log = re.compile(r'(?P<logtime>\w+ \d+ [\d:]+) (?P<hostname>\w+ \w+) (?P<program>\w+) (?P<msg>.*)')

?P< > : < > 里面要添加的名字

\w+ : 是匹配所以字母
\d+ : 是匹配所有的数字
[\d:]+ : 是多次匹配所有的数字加“ :”

logmatch=re_log.match(a)

match:是代表对比
a: 代表字符串,
logmatch: 代表的对象
这个公式的意思是 re_log 匹配要和字符窜 a 进行匹配

logmatch.groupdict()

这个意思是说 以字典的形式打印出来

结果如下:

{'hostname': 'localhost abrt',
'logtime': 'Jul 28 03:10:18',
'msg': 'unhandled Python exception in 1check_log.py',
'program': 'detected'}

如果我们改为使用 findall()函数函数时
re_log.findall(a)

那么就没有前面的key的值 是一个列表(里面有一个元组,并且这个元组有4 组字符串),而不是一个字典;

结果如下:
[('Jul 28 03:10:18',
'localhost abrt',
'detected',
'unhandled Python exception in 1check_log.py')]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息