Задать вопрос
@timka228

Как на Python перевести string в timedelta?

Работаю с библиотекой datetime.
Есть вот такая timedelta в стринге:
timedelta_str = '1 days, 0:00:00'
Как это перевести в настоящую timedelta для последующих вычислений с датами? timedelta так же может быть такой:
timedelta_str = '1:30:00'
  • Вопрос задан
  • 659 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
SoreMix
@SoreMix Куратор тега Python
yellow
Существующих методов нет (а может и есть), делайте свой парсер, исходя из нужного формата. Что-то вроде:

def parse_timedelta(timedelta_str):

    pattern = re.compile(r'((?P<days>\d+) days, )?(?P<hours>\d+):(?P<minutes>\d+):(?P<seconds>\d+)')
    m = pattern.match(timedelta_str)

    params = {key: float(val) for key, val in m.groupdict(0).items()}

    return timedelta(**params)

print(parse_timedelta('1 days, 0:00:25'))
print(parse_timedelta('0:00:25'))
Ответ написан
Комментировать
@dmshar
А я бы сделал так, в две строки:

from datetime import timedelta
timedelta_str = '1 days, 0:00:00'

days,hours,minutes,seconds = map(float, timedelta_str.replace('days,', ":").split(':'))
t_delta = timedelta(days=days,hours=hours, minutes=minutes, seconds=seconds)

print(t_delta,type(t_delta))


Результат:
1 day, 0:00:00 <class 'datetime.timedelta'>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы