Извлечение данных из строк файла журнала в Python
Мне нужно извлечь время (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
Я новичок, и я выполнил поиск в Google и переполнение стека, но я не нашел пути, чтобы решить это. Может кто-нибудь мне помочь? Спасибо!
2 ответа
import re
result = re.findall(r'.*\[(.+)\].+article\_id\=(\d+)\&user_id\=(\d+).*',your_string)
Простое регулярное выражение может извлечь это.
>>> 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
если вы хотите применить шаблон к отдельным линиям.