Разбор дат в строке. Порт на Python проекта https://github.com/DenisNP/Hors с изменениями под неопределённые даты
Project description
Hors
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8333f027d326b63838bc34632f72389e8a9c4f77bd54677ea08d90c996446572
|
|
| MD5 |
51f2b8fef51ad39ce47619e167b88805
|
|
| BLAKE2b-256 |
cc3fa4815b57374b6a404ee261baff9358b854d6cbf5e9e046d7e3388866ced6
|
File details
Details for the file hors_python_partial-0.1.7.dev1-py3-none-any.whl.
File metadata
- Download URL: hors_python_partial-0.1.7.dev1-py3-none-any.whl
- Upload date:
- Size: 39.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79a41837baf0f438f6da1cf86ec4ddb54c6a6a062acd88007deddeb4db34264b
|
|
| MD5 |
dd6c4eb6afec3c275c743895f1ebe69d
|
|
| BLAKE2b-256 |
fd852cb1c8936826640076eeb7334e1dbd4906db147be5e99e31ef7d3180c79b
|