Skip to main content

Разбор дат в строке. Порт на Python проекта https://github.com/DenisNP/Hors с изменениями под неопределённые даты

Project description

Hors

MIT License

hors — это модуль Python для распознавания дат и времени в естественной речи на русском языке. Он умеет понимать сложные конструкции с абсолютными и относительными датами, временем, а также временными периодами. Название библиотеки отсылает к славянскому богу солнца – Хорс.

Оригинальная версия библиотеки написана Денисом Пешехоновым на C# и доступна на GitHub под лицензией MIT. Логика работы в форке почти не изменена, за исключением ряда доработок.

Отличия от оригинальной библиотеки

Особенности PartialDateTime

  • Гибкость задания: Можно задавать дату с любым набором известных компонентов (год, месяц, день, время). Если время не задано, оно может оставаться неопределённым.
  • Арифметика по известным разрядам: При прибавлении или вычитании timedelta операции применяются только к тем компонентам, которые известны. Например, если указана только дата без времени, то операция применяется к дате (год, месяц, день), а время в результате остаётся неопределенным.

Установка

Для установки клонируйте репозиторий и установите зависимости вручную:

git clone https://github.com/yourusername/hors-python-partial.git
cd hors-python
pip install -r requirements.txt
python setup.py install

Использование

Пример использования библиотеки:

import hors

# Распознавание фиксированной даты и времени
r = hors.process_phrase('Утром 3 сентября 2059 года мы слушали Шуфутинского')
print(r.dates[0].type)  # <DateTimeTokenType.FIXED: 1>
print(r.dates[0].date_from)  # Например, PartialDateTime(year=2059, month=9, day=3, hour=9)

# Распознавание временного периода
r = hors.process_phrase('Полёт Гагарина длился с 9 утра 12 апреля 1961 года до 11 утра')
print(r.dates[0].type)  # <DateTimeTokenType.PERIOD: 2>
print(r.dates[0].date_from)  # PartialDateTime(year=1961, month=4, day=12, hour=9)
print(r.dates[0].date_to)  # PartialDateTime(year=1961, month=4, day=12, hour=11)

r = hors.process_phrase('3 числа мы слушали Шуфутинского')
print(r.dates[0].type)  # <DateTimeTokenType.FIXED: 1>
print(f"{r.dates[0].date_from} | {r.dates[0].date_to}")
# ????-??-03 00:00:00.000000 | ????-??-03 00:00:00.000000 + 23:59:59.999999

Тестирование

Запустите тесты командой:

python -m unittest discover tests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hors_python_partial-0.1.8.dev0.tar.gz (33.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hors_python_partial-0.1.8.dev0-py3-none-any.whl (39.8 kB view details)

Uploaded Python 3

File details

Details for the file hors_python_partial-0.1.8.dev0.tar.gz.

File metadata

  • Download URL: hors_python_partial-0.1.8.dev0.tar.gz
  • Upload date:
  • Size: 33.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.14

File hashes

Hashes for hors_python_partial-0.1.8.dev0.tar.gz
Algorithm Hash digest
SHA256 ecbd93f04e4dad64adfa49f2ffa363939d27d03a366eaa540a2f8a815aa9cae3
MD5 9bd2fec6c580de2eca856e915795f5a6
BLAKE2b-256 f021f8d013bc8b607919b35bcbd9406bf8751b310b5e3f38274fe24cb07f7d8a

See more details on using hashes here.

File details

Details for the file hors_python_partial-0.1.8.dev0-py3-none-any.whl.

File metadata

File hashes

Hashes for hors_python_partial-0.1.8.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 76699352d3fad38411893c2513f0c2f8fe2062ab0ea07937554d0226760fb1c8
MD5 6621af49ea9886224393784fb2955cfa
BLAKE2b-256 393b98a6ce0ac8f5dc05a93ec02d4ae9129a4f71b7cf9db51bd58d9007554dad

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page