мне нужна логика, которая будет извлекать URL-адрес из файла журнала Apache: прямо сейчас я это сделал:Есть ли способ сделать эту функцию более приятной?
apache_log = {'@source': 'file://xxxxxxxxxxxxxxx//var/log/apache2/access.log', '@source_host': 'xxxxxxxxxxxxxxxxxxx', '@message': 'xxxxxxxxxxxxxxx xxxxxxxxxx - - [02/Aug/2013:12:38:37 +0000] "POST /user/12345/product/2 HTTP/1.1" 404 513 "-" "PycURL/7.26.0"', '@tags': [], '@fields': {}, '@timestamp': '2013-08-02T12:38:38.181000Z', '@source_path': '//var/log/apache2/access.log', '@type': 'Apache-access'}
data = apache_log['@message'].split()
if data.index('"POST') and data[data.index('"POST')+2].startswith('HTTP'):
print data[data.index('"POST')+1]
Это возвращает меня:
/user/12345/product/2
В принципе правильный результат, но путь Я сделал это, мне это не очень нравится.
Может кто-нибудь предложить лучший (более Pythonic) способ извлечения этого пути из файла журнала Apache.
Принадлежит на codereview.SE. – geoffspear
use phython regexp –
Я не думаю, что часть 'if data.index ('" POST') 'работает так, как вы хотите. Для справки в будущем, проверяя, есть ли что-то в списке, это просто' '" POST 'в данных '. – user2357112