python - 如何使用正则表达式解析日志以列出
问题描述
我尝试将此日志解析为熊猫数据框。我需要使用正则表达式将此日志解析为带有 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)
解决方案
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)
推荐阅读
- java - 使用 Docker 安装 rJava 包
- python - 根据 python 中的条件,使用来自第 1 行或第 2 行的值更新数据框列
- mysql - MySQL 错误 - 无法更新存储函数/触发器中的表“library_audit2”,因为它已被语句使用
- processing - 区域点击处理后在屏幕上绘图
- r - R如何仅计算营业时间的“任务时间”
- java - 如何在两个数组之间的不同位置打印匹配元素?(爪哇)
- python - 列表中的日期时间对象
- c++ - std::invocable 和 std::regular_invocable 概念有什么区别?
- sql - 从不相关的表中获取数据
- python - 我应该如何处理财务 DF 中的 NaN 值?