сопоставление регулярных выражений python и замена дат

#python #regex #datetime #date

#python #регулярное выражение #дата-время #Дата

Вопрос:

Мне нужно сопоставить даты в форме:

10 января 2012

И замена в форме:

10 Января 2012

Вот что у меня есть на данный момент:

         pattern = re.findall(r'(?:January|February|March|April|May|June|July|August|September|October|November|December)sdd,sd{4}', text)
        print pattern
  

Как мне заменить?

Комментарии:

1. Что вы пробовали? Пожалуйста, опубликуйте свой код и любые конкретные проблемы, с которыми вы столкнулись.

2. @Doug T. — Даже если это не так, это все равно не приемлемый вопрос. В нынешнем виде вопрос звучит так: «Я не знаю регулярных выражений, напишите одно для меня».

3. Да, мне нужна помощь в преобразовании из формы от 10 января 2012 года в форму от 10 января 2012 года

4. @michael: «заменить» — это совершенно неправильная концепция. Вы просто форматируете выходные данные.

Ответ №1:

Используется strptime() для анализа даты и strftime() для генерации новой строки. В этом случае нет причин использовать регулярное выражение.

 In [1]: import time
In [2]: tm = time.strptime('January 10, 2012', '%B %d, %Y')
In [3]: time.strftime('%d %B %Y', tm)
Out[4]: '10 January 2012'
  

Ответ №2:

В общем, что-то вроде этого:

найти: ^(January) (d{1,2}), (d{4})$ заменить $2 $1 $3