Как я могу добавить n чисел datetime.strptime в формате «%I:%M:%S», хранящемся в списке на python

#python #list #datetime #strptime

Вопрос:

У меня есть n datetime.strptime элементов, хранящихся в списке в "%I:%M:%S" формате

total_logs = ['0:00:12', '0:10:02', , , n]

Как я могу их добавить?

Комментарии:

1. Вы имеете в виду, добавить их друг к другу? Что вы пробовали? Как бы вы добавили обычные номера в список друг к другу? Сделайте то же самое с объектами datetime после анализа строк.

2. попробуйте что-нибудь вроде sum([datetime.datetime.strptime(i, "%I:%M:%S") for i in total_logs])

3. @Ghost Ops, я попробовал ваш метод, но есть ошибка типа: неподдерживаемые типы операндов для : ‘int’ и ‘datetime.datetime’

4. Не могли бы вы показать, что вы пробовали?

Ответ №1:

Для этого я бы использовал класс Timedelta от pandas .

 import pandas as pd

logs = ['0:00:12', '0:10:02']
r = pd.Timedelta(logs[0])   pd.Timedelta(logs[1])
print(r)
 

Выход: 0 days 00:10:14

Python datetime.timedelta также может выполнить эту работу, но он не работает непосредственно со строками. Сначала вы должны преобразовать их с помощью datetime.datetime.strptime .

Чтобы суммировать все элементы в списке, вам нужно начать с начальной точки, в следующем коде это так r , затем вы повторяете список и добавляете в r :

 In [37]: r = pd.Timedelta(0)

In [38]: r
Out[38]: Timedelta('0 days 00:00:00')

In [39]: for item in logs:
    ...:     r  = pd.Timedelta(item)
    ...:

In [40]: print(r)
0 days 00:10:14
 

Однонаправленным для всего мышления было бы: sum(map(pd.Timedelta, logs), pd.Timedelta(0))

Комментарии:

1. Спасибо, это именно то, чего я хотел. Но как преобразовать этот код для n-го числа элементов в списке?

2. @MilindKhobragade проверьте обновленный ответ