用于解析字符串和从结构化/非结构化数据中提取信息的python库
pygrok的Python项目详细描述
用于解析字符串和从中提取信息的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}
现在age是int类型,weight是float类型。
太棒了!
下面列出了一些您可以使用的模式:
`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, 它解释了怪兽的工作原理。
贡献
- 我们鼓励你 fork,改进 编码,然后发出请求。
- Issue tracker
获取帮助
mail:garygaowork@gmail.com twitter:@garyelephant