Как разобрать название месяца в юникоде, чтобы получить datetime в Python 2.7 - PullRequest
5 голосов
/ 16 января 2012

У меня есть u'20 січня 2012 ', и мне нужно получить объект datetime. (до 20 января 2012 г. == до 20 января 2012 г.)

Это очень легко, когда у вас есть datetime.strptime ('1 июня 2005 г.,'% d% b% Y '). Но что делать, если у меня месяц в другой локали?

(appengine + python 2.7)

Было бы хорошо иметь метод get_month (u'Month name в разных формах ', Language.RUS) -> int:' number of month ' Таким образом, библиотека может обрабатывать разные формы названия месяца. Например, «1 Июнь» и «1 Июня» должны совпадать. Я использую его для сканирования сайтов и анализа даты.

Ответы [ 2 ]

8 голосов
/ 16 января 2012

Возможно, вы можете сначала преобразовать его в объект datetime, а затем использовать языковой стандарт, чтобы установить другой языковой стандарт, и снова преобразовать его ..

Вот кое-что, с чего можно начать ..

import locale, datetime

In [1]: datetime.datetime.strptime('February', '%B')
Out[1]: datetime.datetime(1900, 2, 1, 0, 0)

In [2]: locale.setlocale(locale.LC_ALL, 'de_DE')
Out[2]: 'de_DE'

In [3]: datetime.date(2008, 2, 1).strftime('%B')
Out[3]: 'Februar'

In [4]: datetime.datetime.strptime('Februar', '%B')
Out[4]: datetime.datetime(1900, 2, 1, 0, 0)
1 голос
/ 17 января 2012

Существует хорошее решение использовать метод синтаксического анализа python_dateutil и реализовать класс parserinfo для данного языка.

http://blog.elsdoerfer.name/2009/12/12/django-flexible-date-form-fields-accepting-almost-any-input/

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