pygrok
A Python library to parse strings and extract information from structured/unstructured data
What it is and what it does
pygrok is a Python library that implements Grok-style pattern matching for parsing and extracting data from strings. Instead of writing complex regular expressions, you define patterns using named capture groups like `%{WORD:name}` and `%{NUMBER:age:int}`, and the library handles the underlying regex matching. It comes with a library of pre-built patterns for common data types (IP addresses, timestamps, log formats, etc.) and supports type conversion during extraction.
The package is built on top of the regex module (not Python's built-in re) because it needs atomic grouping syntax that the standard library doesn't support. It's most useful for log parsing, structured data extraction from semi-formatted text, and situations where you want readable, maintainable pattern definitions instead of dense regex strings.
Use it for:
- Parse application or system logs to extract fields like timestamps, log levels, and messages into structured records.
- Extract key-value pairs from semi-structured text (e.g., 'name is gary, age 25') without hand-writing regex.
- Convert matched string values to specific types (int, float) during extraction in a single step.
- Build data pipelines that need to normalize and structure incoming text data before storage or analysis.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Parses strings and extracts structured data using Grok patterns, a named-capture syntax that simplifies pattern matching without writing complex regular expressions.
No. The package is dormant (last release 2016-09-24, no activity since 2023-11-22) and has high install friction due to the regex module dependency. While it solves a real problem, the lack of maintenance and Python version uncertainty make it risky for new projects. Consider active alternatives like regex-based parsing libraries or modern log-parsing frameworks.
Install
pygrok on PyPI
pip
pip install pygrokuv
uv add pygrokpoetry
poetry add pygrokInstalling pygrok
Before you install
High install friction: the package is dormant (last release 2016-09-24, no commits since 2023-11-22) and requires the regex module as a runtime dependency, which may have compilation requirements on some systems.
License in practice
MIT license is permissive; you can use, modify, and distribute this package freely with minimal restrictions.
Quickstart
pip install pygrok
from pygrok import Grok
text = '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)
result = grok.match(text)
print(result) # {'name': 'gary', 'gender': 'male', 'age': 25, 'weight': 68.5}
The regex module must be installed and may require a C compiler on some platforms; Python version compatibility is unspecified.
Verify before relying
- Whether the regex module dependency is pre-compiled or requires a C compiler on your platform.
- Python version compatibility: requires_python is unspecified in the fact sheet.
- Whether dormancy affects real-world reliability for production log parsing workloads.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | dormant — 3,611 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 98,424/month — #13,085 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pygrok-1.0.0.tar.gz
Keywords: python grok, regex
Tags
More Text Processing packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
pyparsingpyparsing provides a library for building text…
permissive · top 1,000 on PyPI
docutilsDocutils converts plaintext documentation in…
unclear · top 1,000 on PyPI
RapidFuzzRapidFuzz provides fast fuzzy string matching…
permissive · top 1,000 on PyPI
tinycss2tinycss2 parses CSS strings into token and…
permissive · top 1,000 on PyPI
llama-parseLlamaParse parses complex documents (PDFs,…
permissive · top 1,000 on PyPI
pampyPampy provides pattern matching for Python,…
permissive · top 15,000 on PyPI
stringparserExtracts values from strings using…
permissive · top 15,000 on PyPI
rebulkReBulk provides a fluent API for building…
permissive · top 15,000 on PyPI
hyperscanPython bindings for Vectorscan (an open-source…
permissive · top 15,000 on PyPI
commonregexExtracts dates, times, emails, phone numbers,…
permissive · top 15,000 on PyPI
exrexExrex generates all or random strings matching…
agpl · top 15,000 on PyPI
schemaValidates Python data structures (dicts, lists,…
permissive · top 1,000 on PyPI
unstructuredIngests and pre-processes unstructured…
permissive · top 5,000 on PyPI
logstash_formatterFormats Python logging output as JSON objects…
permissive · top 15,000 on PyPI
repathConverts Express-style path strings (like…
permissive · top 15,000 on PyPI