rutimeparser

Recognize date and time in russian text and return datetime.datetime.

17
5
Python

RuTimeParser

Данный модуль содержит базовый класс и упрощающие работу с ним функции для извлечения даты и времени из текста на русском языке.

Установка

sudo pip3 install rutimeparser

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

Примеры ниже приведены для 2 апреля 2017 года.

Извлечение даты и времени:

>>> from rutimeparser import parse
>>> parse('завтра')
datetime.date(2017, 4, 3)
>>> parse('завтра утром')
datetime.datetime(2017, 4, 3, 9, 0)
>>> parse('Напомни мне завтра утром составить список дел.')
datetime.datetime(2017, 4, 3, 9, 0)

Извлечение текста, не относящегося к дате и времени:

>>> from rutimeparser import get_clear_text, get_last_clear_text
>>> get_clear_text('Напомни мне завтра утром составить список дел.')
'напомни мне составить список дел'
>>> get_last_clear_text('Напомни мне завтра утром составить список дел.')
'составить список дел'

Неявные ситуации

  • утром - в 09:00
  • днём - в 15:00
  • вечером - в 21:00
  • ночью - в 03:00
  • на следующей неделе - на следующей неделе в понедельник.
  • через неделю - ровно через 7 суток.
  • через неделю утром - через 7 дней утром.
  • в следующем месяце - 1 число следующего месяца.

Больше примеров в tests.py

API reference

Параметры rutimeparser.parse:

  • words (str, list, tuple) – Строка с текстом или список слов. Параметр является необязательным, т.к. может быть передан непосредственно в метод parse.
  • tz (str) – Название часового пояса. Если не указано, возвращается наивное время.
  • now (datetime.datetime) – От какого момента считать текущее время
  • allowed_results (list, tuple) – Список объектов, которые могут быть возвращены методом parse. Возможные значения – datetime.datetime, datetime.date, datetime.time, None.
  • default_time (datetime.time) – Время по умолчанию. Используется только в том случае, если из текста удалось получить только date, но необходимо вернуть datetime. По умолчанию 09:00.
  • default_datetime (datetime.datetime) – Дата и время по умолчанию. Возвращается методом parse, если в тексте не удалось найти значение, подходящее под allowed_results. По умолчанию равен значению параметра now.

TODO

  • Перейти на pymorphy
  • Добавить поддержку AM/PM (например, “в два часа дня”)