Регулярные выражения в Python (перевод даты из текстового формата в числовой )
Мне даны 3 варианта дат: 042555 04/25/1955 April 25, 1955
Мне необходимо преобразовать каждый формат в другой ( то есть всего 6 преобразований). Например, для того, чтобы "042555" преобразовать в "04/25/1955" я использовала код:
import re
s = "042555"
re.sub(r'(\d{2})(\d{2})(\d{2})', r'\1/\2/19\3',s)
И он работает. Обратное преобразование тоже получилось.
Но я не понимаю, как преобразовать формат "April 25, 1955" в "04/25/1955" и обратно.
Буду благодарна, если сможете помочь!
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Используйте lambda для обработки найденных групп и генерации выходной строки.
import re
months = ["January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"]
a = "April 25, 1955"
b_from_a = re.sub(r"(\w+)\s+(\d+),\s*(\d+)", lambda m: f"{months.index(m[1])+1:0>2}/{m[2]}/{m[3]}", a)
b = "04/25/1955"
a_from_b = re.sub(r"(\d+)/(\d+)/(\d+)", lambda m: f"{months[int(m[1])-1]} {m[2]}, {m[3]}", b)