parsedatetime, чтобы показать диапазон данных? - PullRequest
2 голосов
/ 22 декабря 2011

Я что-то упустил, или время синтаксического анализа не выполняет диапазоны дат, например:

"Next January" - в идеале должно возвращаться что-то вроде ('Jan 1st 2012', 'Jan 31st 2012')

(код sudo - очевидно правильная дата Pythonобъекты)

Точно так же

"Tomorrow" может возвращать что-то вроде ('Dec 23rd 2011 00:00', 'Dec 23rd 2011 23.59')

Я вижу, что он может анализировать такие вещи, как "Aug 24th - Sept 1st 2012" как диапазон - мне было интересно, если этомог бы сделать отдельные фразы и разобраться с этим?

Или если бы он мог сказать мне, какой период даты / времени он нашел - то есть month для первого примера, day для второго.

Спасибо, парень

1 Ответ

4 голосов
/ 22 декабря 2011

Глядя на исходный код, я вижу несколько регулярных выражений, которые в значительной степени объясняют, какие типы диапазонов могут быть проанализированы (я удалил некоторые строки, имеющие дело с локалями):

# "06/07/06 - 08/09/06"
self.DATERNG1 = self.RE_RDATE + r'\s?%(rangeseperator)s\s?' + self.RE_RDATE

# "march 31 - june 1st, 2006"
self.DATERNG2 = self.RE_RDATE3 + r'\s?%(rangeseperator)s\s?' + self.RE_RDATE3

# "march 1rd -13th"
self.DATERNG3 = self.RE_RDATE3 + r'\s?%(rangeseperator)s\s?(\d\d?)\s?(rd|st|nd|th)?'

# "4:00:55 pm - 5:90:44 am", '4p-5p'
self.TIMERNG1 = self.RE_RTIMEHMS2 + r'\s?%(rangeseperator)s\s?' + self.RE_RTIMEHMS2

# "4:00 - 5:90 ", "4:55:55-3:44:55"
self.TIMERNG2 = self.RE_RTIMEHMS + r'\s?%(rangeseperator)s\s?' + self.RE_RTIMEHMS

# "4-5pm "
self.TIMERNG3 = r'\d\d?\s?%(rangeseperator)s\s?' + self.RE_RTIMEHMS2

# "4:30-5pm "
self.TIMERNG4 = self.RE_RTIMEHMS + r'\s?%(rangeseperator)s\s?' + self.RE_RTIMEHMS2

Как вы можетевидите, есть разделитель, используемый во всех регулярных выражениях, чтобы решить, где разбить строку, а затем проанализировать начальную и конечную даты.

Следовательно, в качестве ответа на ваш вопрос, в настоящее время невозможно проанализировать одну фразу какдиапазон с текущей реализацией.

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