我需要提取时间(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
我是初学者,我确实搜索了谷歌和堆栈溢出,但我还没有找到解决方法。谁能帮我?谢谢!
答案 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)