我刚刚开始学习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)!