Другой способ - смоделировать функцию, которая скрывает сложность задачи, применяя задачу извлечения времени к каждому компоненту вашего входного списка. Вот решение:
Ваш список ввода, в который я добавил недостающие одинарные кавычки:
mylist = [['x', '6 - 9:30 AM - 10:30 AM - 2 PM - 5 PM - 9 PM'], ['y', '7:30 AM - 2:30 PM, 7:30 AM - 2:30 PM, 7:30 AM - 1:30 PM']]
Определите функцию f () , которая будет анализировать в HH: MM каждое из входных значений (при условии, что все они разделены запятой или da sh):
def f(time):
t = re.findall(r'\d+', time)
suffix = ""
if "AM" in time:
suffix = "AM"
elif "PM" in time:
suffix = "PM"
if len(t) > 1:
return ':'.join(t) + suffix
return t[0] + ":00" + suffix
В основном он извлекает цифры с использованием регулярного выражения для входных значений, синтаксический анализ их в часы и минуты и, наконец, примените правильный суффикс (либо пустой / AM / PM в соответствии с требованиями).
Например, это напечатает ваши значения:
for ls in mylist:
ls = re.split('-|,', ls[1])
print([f(x) for x in ls])