У меня есть список значений продолжительности, отформатированный следующим образом:
['PT1H38M55S', 'PT25M28S', 'PT2H26S', ...]
Я пробовал такую группировку:
import re
re.search('PT([0-9]+|)H?([0-9]+|)M?([0-9]+|)S?', x).group(1, 2, 3)
, где x - любой элемент из списка, потому что я хочуФормат времени () из него:
from datetime import time
def parse_duration(x):
HMS = re.search('PT([0-9]+)H([0-9]+)M([0-9]+)S', x).group(1, 2, 3)
return time(int(HMS[0]), int(HMS[1]), int(HMS[2]))
Но если совпадения нет, код ломается.
Есть ли решение заполнить несогласованный поиск нулем (например) или другой попыткойбыло бы проще?
Я нашел такой метод, но я не смог применить его к своему случаю: Как игнорировать несопоставленную группу в строке в re python?