logstash的grok功能是否有Python实现?

2024-05-15 00:28:02 发布

您现在位置:Python中文网/ 问答频道 /正文

Logstash's grok是一个建立在正则表达式之上的字符串解析工具,它提供了许多模式,使字符串解析工作变得更加容易,我第一次使用它时就爱上了它。但是不幸的是,它是用Ruby编写的,这使得它不可能在我的Python项目中使用,所以我想知道有没有什么Python实现可以像grok那样简化字符串解析呢?在


Tags: 工具项目字符串grok模式rubylogstash
2条回答

我根据@georg的回答,在github中构建了一个名为pygrok的项目,以满足我在python代码中对日志模式的解析需求,我想pygrok可能对你有帮助,让我简单介绍一下:

皮格罗克

一个Python库,用于解析字符串并从结构化/非结构化数据中提取信息

我能用格罗克干什么?在

  • 解析和匹配字符串(日志、消息等)中的模式
  • 从复杂的正则表达式中解脱出来。在
  • 从结构化/非结构化数据中提取信息

你可以找到它here。在

我不知道grok的任何python端口,但这个功能似乎很容易实现:

import re

types = {
    'WORD': r'\w+',
    'NUMBER': r'\d+',
    # todo: extend me
}


def compile(pat):
    return re.sub(r'%{(\w+):(\w+)}', 
        lambda m: "(?P<" + m.group(2) + ">" + types[m.group(1)] + ")", pat)


rr = compile("%{WORD:method} %{NUMBER:bytes} %{NUMBER:duration}")

print re.search(rr, "hello 123 456").groupdict()
# {'duration': '456', 'bytes': '123', 'method': 'hello'}

相关问题 更多 >

    热门问题