Как я могу анализировать интервалы свободного текста в Python, от нескольких лет до нескольких секунд? - PullRequest
9 голосов
/ 19 марта 2012

Я хотел бы проанализировать интервалы свободного текста, как показано ниже, используя Python:

  • 1 секунда
  • 2 минуты
  • 3 часа
  • 4 дня
  • 5 недель
  • 6 месяцев
  • 7 лет

Существует ли безболезненный способ сделать это, в идеале простымВызов функции библиотеки?

Я пытался:

  • dateutil.parser.parse(), который понимает секунды через часы, но не дни или больше.
  • mx.DateTime.DateTimeDeltaFrom(), которыйпонимает дни, но терпит неудачу недели или выше и молча (например, это может создать интервал длины 0 или проанализировать «2 месяца» как 2 минуты).

Ответы [ 3 ]

4 голосов
/ 19 марта 2012

Это новинка для меня, но, основываясь на каком-то поиске, вы пробовали whoosh ?

Редактировать: Есть также parsedatetime :

#!/usr/bin/env python
from datetime import datetime
import parsedatetime as pdt # $ pip install parsedatetime

cal = pdt.Calendar()
for time_str in ['1 second', '2 minutes','3 hours','5 weeks','6 months','7 years']:
    diff = cal.parseDT(time_str, sourceTime=datetime.min)[0] - datetime.min
    print("{time_str:<10} -> {diff!s:>20} <{diff!r}>".format(**vars()))

Выход

1 second   ->              0:00:01 <datetime.timedelta(0, 1)>
2 minutes  ->              0:02:00 <datetime.timedelta(0, 120)>
3 hours    ->              3:00:00 <datetime.timedelta(0, 10800)>
5 weeks    ->     35 days, 0:00:00 <datetime.timedelta(35)>
6 months   ->    181 days, 0:00:00 <datetime.timedelta(181)>
7 years    ->   2556 days, 0:00:00 <datetime.timedelta(2556)>
2 голосов
/ 30 октября 2016

как насчет pytimeparse lib

Возвращает время в виде количества секунд:

from pytimeparse.timeparse import timeparse
>>> timeparse('33m')
1980
>>> timeparse('2h33m')
9180
>>> timeparse('4:17')
257
>>> timeparse('5hr34m56s')
20096
>>> timeparse('1.2 minutes')
72

источник, кажется, здесь https://github.com/wroberts/pytimeparse

0 голосов
/ 08 августа 2017

dateutil теперь поддерживает все исходные запрошенные интервалы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...