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

在python中从日志文件行提取数据,python,logfile,Python,Logfile,我需要提取时间(02/Jan/2015:08:12)、文章id和用户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 我是一个初学者,我在

我需要提取时间(02/Jan/2015:08:12)、文章id和用户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

我是一个初学者,我在google和stack overflow上搜索过,但我还没有找到解决方法。有人能帮我吗?谢谢

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

>>> 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

如果您想开始了解python正则表达式的用法,re模块可能会从您要查找的行中获取所有信息。学习如何编写正则表达式可能是一条陡峭的学习曲线,但从长远来看,将获得巨大的回报。logstash等日志分析器程序大量使用正则表达式来提取信息
import re
result = re.findall(r'.*\[(.+)\].+article\_id\=(\d+)\&user_id\=(\d+).*',your_string)