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.7.dev1.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.7.dev1-py3-none-any.whl (39.8 kB view details)

Uploaded Python 3

File details

Details for the file hors_python_partial-0.1.7.dev1.tar.gz.

File metadata

  • Download URL: hors_python_partial-0.1.7.dev1.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.7.dev1.tar.gz
Algorithm Hash digest
SHA256 8333f027d326b63838bc34632f72389e8a9c4f77bd54677ea08d90c996446572
MD5 51f2b8fef51ad39ce47619e167b88805
BLAKE2b-256 cc3fa4815b57374b6a404ee261baff9358b854d6cbf5e9e046d7e3388866ced6

See more details on using hashes here.

File details

Details for the file hors_python_partial-0.1.7.dev1-py3-none-any.whl.

File metadata

File hashes

Hashes for hors_python_partial-0.1.7.dev1-py3-none-any.whl
Algorithm Hash digest
SHA256 79a41837baf0f438f6da1cf86ec4ddb54c6a6a062acd88007deddeb4db34264b
MD5 dd6c4eb6afec3c275c743895f1ebe69d
BLAKE2b-256 fd852cb1c8936826640076eeb7334e1dbd4906db147be5e99e31ef7d3180c79b

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