当前位置:首页 > 服务器技术 > apache

python – 解析apache日志文件

我刚刚开始学习Python,并希望阅读Apache日志文件并将每行的部分内容放入不同的列表中.

来自文件的行

172.16.0.3 – – [25/Sep/2002:14:04:19 +0200] “GET / HTTP/1.1” 401 – “” “Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020827”

根据Apache website的格式是

%h %l %u %t ”%r” %>s %b ”%{Referer}i” ”%{User-Agent}i

我能够打开文件并按原样读取它,但我不知道如何以该格式读取它,因此我可以将每个部分放在一个列表中.

解决方法:

这是regular expressions的工作.

例如:

line = '172.16.0.3 - - [25/Sep/2002:14:04:19 +0200] "GET / HTTP/1.1" 401 - "" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020827"'
regex = '([(d.)]+) - - [(.*?)] "(.*?)" (d+) - "(.*?)" "(.*?)"'

import re
print re.match(regex, line).groups()

输出将是一个元组,其中包含来自该行的6条信息(具体地说,该模式中括号内的组):

('172.16.0.3', '25/Sep/2002:14:04:19 +0200', 'GET / HTTP/1.1', '401', '', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020827')

【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!