从python中的日志文件行中提取数据

时间:2016-04-13 21:10:55

标签: python logfile

我需要提取时间(02 / Jan / 2015:08:12),article_id和user_id

行格式如下所示:

67.15.143.7 - - [02/Jan/2015:08:12] "GET/click?article_id=25&user_id=104 HTTP/1.1" 200 2327
67.15.143.7 - - [02/Jan/2015:08:12] "GET/click?article_id=211&user_id=9408 HTTP/1.1" 200 380

我是初学者,我确实搜索了谷歌和堆栈溢出,但我还没有找到解决方法。谁能帮我?谢谢!

2 个答案:

答案 0 :(得分:1)

一个简单的正则表达式可以提取它。

>>> import re
>>> s = '''67.15.143.7 - - [02/Jan/2015:08:12] "GET/click?article_id=25&user_id=104 HTTP/1.1" 200 2327
... 67.15.143.7 - - [02/Jan/2015:08:12] "GET/click?article_id=211&user_id=9408 HTTP/1.1" 200 380'''
>>> re.findall('\[(.*?)\].*?article_id=(\d+).*?user_id=(\d+)',s)
[('02/Jan/2015:08:12', '25', '104'), ('02/Jan/2015:08:12', '211', '9408')]

如果要将模式应用于各个行,请使用re.search代替re.findall

答案 1 :(得分:1)

import re
result = re.findall(r'.*\[(.+)\].+article\_id\=(\d+)\&user_id\=(\d+).*',your_string)