Я пытаюсь извлечь информацию о дате из строки.Строка может выглядеть следующим образом:
- 5 месяцев и 17 часов
- 1 месяц и 19 дней
- 3 месяца и 1 день
- 2 года1 месяц и 2 дня
- 1 год 1 месяц и 1 день и 1 час
И я хотел бы извлечь:
- y = 0m = 5 d = 0 h = 17
- y = 0 m = 1 d = 19 h = 0
- y = 0 m = 3 d = 1 h = 0
- у = 2 м = 1 д = 2 ч = 0
- у = 1 м = 1 д = 1 ч = 1
Я начал работать над чем-то вроде этого:
publishedWhen = '1 year 1 month and 1 days and 1 hour'
y,m,d,h = 0,0,0,0
if 'day ' in publishedWhen:
d = int(publishedWhen.split(' day ')[0])
if 'days ' in publishedWhen:
d = int(publishedWhen.split(' days ')[0])
if 'days ' not in publishedWhen and 'day ' not in publishedWhen:
d = 0
if 'month ' in publishedWhen:
m = int(publishedWhen.split(' month ')[0])
d = int(publishedWhen.replace(publishedWhen.split(' month ')[0] + ' month ','').replace('and','').replace('days','').replace('day',''))
if 'months ' in publishedWhen:
m = int(publishedWhen.split(' months ')[0])
Однако я знаю, что этот код содержит ошибки (некоторые случаи, вероятно, не принимаются во внимание), и что регулярное выражение, вероятно, произведет что-то более чистое и эффективное.Это правда?Какое регулярное выражение поможет мне извлечь всю эту информацию?