Skip to main content

Python Parser for Abbreviated Dates

PypI - Version issues stars - stars stars - stars contributions - contributions

Key Features • How To Use • How it works • Common use cases • Operations • Roadmap

Have you ever tried to understand a date like 11-09, št? Is the št an abbreviation of a month or a weekday? Which of those numbers represent the month or the day? This library leverages on Good Ol' Fashioned AI to parse abbreviated, ambiguous, and incomplete dates in multiple languages.

Key Features

  • Language auto-detection
  • Easily expandable into new languages (30 languages are currently supported)
  • Support for multiple date formats
  • Support for abbreviated weekdays
  • Support for abbreviated months
  • Support for ambiguous month/day numbers

How To Use

The most straightforward way to parse dates is to use the datetime.date() function, that wraps around most of the functionality of the module. This example shows a basic usage of the library to parse the date: "11-09, št":

from datetime import datetime
from fuzzy_parser.engine import Engine

start = datetime(2021, 4, 27).date()
(semantic, _) = Engine(start).when('11-09, št')
for single_date in semantic:
    print(single_date.strftime("%Y-%m-%d"))

The output will show the expected

2021-09-11

How it works

The abbreviation "št" could stand for:

  • Šeštadienis which means in Saturday in Lithuanian
  • Štvrtok which means in Thursday in Slovak

Lithuanian is spoken in Lithuania and in Latvia. Slovak is spoken in Slovakia but also by a minority in the Czech Republic. These countries use different date representations: Czech Republic, Latvia and Slovakia have the day written first because of the "little" date endianness format used as the standard in the country. Lithuania, on the other hand, uses the "big" date endianness format which means that the month is written first. The system factor in all these facts and is able to come with the right answers:

In the case of interpreting the abbreviation as a Saturday:

  • 9 of November 2024
  • 11 of September 2027

In the case of interpreting the abbreviation as a Thursday:

  • 11 of September 2025

For further details have a look at the underlying implementation. In addition, the unit tests might give an impression on how to use this library.

Common use cases

Consuming data from different sources:

  • Scraping: extract dates from different places with several formats and languages
  • IoT: consuming data coming from different sources with different date formats
  • Tooling: consuming dates from different logs / sources
  • Format transformations: when transforming dates coming from different files (PDF, CSV, etc.) to other formats (database, etc).

Operations

We are leveraging GNU Make to automate frequent actions. Please use the following command will show the available recipes to use for operating the local development environment:

make help
Click to see the available recipes
Command Description
help Print this help
synchronize Switch to the main branch, fetch changes & delete merged branches
test Run the test suite
run-time Install the packages packs required for the development environment
install Install the latest library release
uninstall Uninstall the latest library release
release Release recipe to be use from Github Actions
bump Increase the version number
build Build and check distribution packages
publish Publish the diagrams
workflow Creates the Diagrams
remove-all Remove packages and packs
clean Remove debris

The following command stores pypi.org token to "Upload packages" in the local key store to be used by the publish option:

secret-tool store --label='https://pypi.org/manage/account/token/' user ${USER} domain pypi.org

Compatibility

Tested with SWI-Prolog version 8.2.4 on Ubuntu 20.04

License

Distributed under the MIT License. See LICENSE file for more information.

Metadata

Release files for fuzzy-parser 0.2.59

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fuzzy-parser 0.2.59
File Size Uploaded
fuzzy_parser-0.2.59.tar.gz 5.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fuzzy-parser 0.2.59
File Interpreter ABI Platform
fuzzy_parser-0.2.59-py3-none-any.whl Python 3 none any Details

Total release size: 11.2 kB

Release files / fuzzy_parser-0.2.59.tar.gz

Download URL fuzzy_parser-0.2.59.tar.gz
Size 5.3 kB
Tags Source
SHA-256 checksum
How to use checksums
61374d2c07c41dc37caca96a5c39462c8c5a42304beb64709b7386641602a293
BLAKE2b-256 checksum
How to use checksums
ac532b6d1ef8752fc5a958fcf3fbbb4895488a5230cb0d8e11a85b465a596870
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release files / fuzzy_parser-0.2.59-py3-none-any.whl

Download URL fuzzy_parser-0.2.59-py3-none-any.whl
Size 5.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2e799edbce70c67f7fabf1d9250d7f0072635f1a3f6d32e7e48e43892006d33d
BLAKE2b-256 checksum
How to use checksums
fd6fc7179827a80c07adf4e8d67e65736a36a790074c63c23d5d2f5a2a23cf02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page