用于解析字符串和从结构化/非结构化数据中提取信息的python库

pygrok的Python项目详细描述


Join the chat at https://gitter.im/garyelephant/pygrok

用于解析字符串和从中提取信息的python库 结构化/非结构化数据

我能用格罗克干什么?

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

安装

$ pip install pygrok

或者从下载、解压缩并安装pygrok here

$ tar zxvf pygrok-xx.tar.gz
$ cd pygrok_dir
$ sudo python setup.py install

开始

frompygrokimportGroktext='gary is male, 25 years old and weighs 68.5 kilograms'pattern='%{WORD:name} is %{WORD:gender}, %{NUMBER:age} years old and weighs %{NUMBER:weight} kilograms'grok=Grok(pattern)printgrok.match(text)# {'gender': 'male', 'age': '25', 'name': 'gary', 'weight': '68.5'}

很酷!

如果您使用 %{pattern:name:type}语法,例如%{NUMBER:age:int}

frompygrokimportGroktext='gary is male, 25 years old and weighs 68.5 kilograms'pattern='%{WORD:name} is %{WORD:gender}, %{NUMBER:age:int} years old and weighs %{NUMBER:weight:float} kilograms'grok=Grok(pattern)printgrok.match(text,pattern)# {'gender': 'male', 'age': 25, 'name': 'gary', 'weight': 68.5}

现在ageint类型,weightfloat类型。

太棒了!

下面列出了一些您可以使用的模式:

`WORD` means \b\w+\b in regular expression.
`NUMBER` means (?:%{BASE10NUM})
`BASE10NUM` means (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)))

other patterns such as `IP`, `HOSTNAME`, `URIPATH`, `DATE`, `TIMESTAMP_ISO8601`, `COMMONAPACHELOG`..

查看所有模式here

您也可以使用自定义模式,请参见these codes

更多详细信息

beause python re模块不支持正则表达式语法 原子分组(?)>;),因此pygrok需要 regex待 安装。

皮格罗克的灵感来自Grok 约旦西塞尔开发。这不是乔丹·西塞尔的包装纸 完全由我来执行。

grok是一个简单的软件,允许您轻松地解析字符串、日志 以及其他文件。使用grok,您可以转换非结构化日志和事件数据 在结构化数据中,pygrok做了同样的事情。

我建议你看看logstash filter grok, 它解释了怪兽的工作原理。

模式文件来自logstash filter grok’s pattern files

贡献

获取帮助

mail:garygaowork@gmail.com
twitter:@garyelephant

贡献者

感谢all contributors

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在JSP中添加自定义隐式对象   java MasterMindResource泄漏?   不同的c#java结果加密   java为什么安卓 studio显示“constraintlayout中缺少约束”错误?   java Make Logback将日志打印到文件中   java如何在Google应用程序引擎中设置日期时间?   jeditorpane如何阻止java HTMLEditorKit自动关闭我的标记   返回到Activity onCreate()时,不会调用java函数   java为什么我在这个对象上得到一个NullPointerException?   在java中,如何使用包含数组的参数调用图形方法?   java如何在Play framework 2应用程序中存储Akka参与者列表?   ssh使用java将文件从一个solaris 9复制到另一个solaris 9   网络Java服务器正在等待客户端响应   java Spring mvc从formBackingObject()重定向到页面   java Spark:JavaRDD<Tuple2>到javapairdd<>   java如何动态调用基类中由字符串值指定的子类方法?