首页 > 解决方案 > 如何使用正则表达式解析日志以列出

问题描述

我尝试将此日志解析为熊猫数据框。我需要使用正则表达式将此日志解析为带有 python 的列表/数据框,谢谢

127.0.0.1 - - [05/Feb/2012:17:11:55 +0000] "GET / HTTP/1.1" 200 140 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.5 Safari/535.19"

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined

该日志来自Understanding Apache's access log

我尝试过拆分和 for 循环,但它很奇怪。正则表达式会更有效,你知道它是否可能以及如何?

node = re.search(regex, log_line).group(1)
node = node.split(" ")
print(node)

标签: pythonregexpython-3.xlogging

解决方案


APACHE_LOG_PATTERN = '^(\S+) (\S+) (\S+) \[([\w:/]+\s[+\-]\d{4})\] \"(\S+) (\S+)\s*(\S+)?\s*\" (\d{3}) (\S+)'
match = re.search(APACHE_LOG_PATTERN, l)
host          = match.group(1)
client_id     = match.group(2)
user_id       = match.group(3)
date_time     = match.group(4)#%Y/%m/%d:%I:%M:%S +0100
method        = match.group(5)
endpoint      = match.group(6)
protocol      = match.group(7)
response_code = int(match.group(8))
content_size  = match.group(9)

推荐阅读