В зависимости от результата, который вы хотите использовать, используйте один из этих двух операторов понимания списка:
- Первый даст вам список списка
- Второй даст вам плоский список
Код:
from datetime import datetime
train_period = [
['7-31-2013', '12-31-2014'],
['8-31-2013', '1-31-2015'],
['9-30-2013', '2-28-2015'],
['10-31-2013','3-31-2015'],
['11-30-2013', '4-30-2015']
]
DATE = [[datetime.strptime(y,'%m-%d-%Y') for y in x] for x in train_period]
print(DATE)
print("====")
DATE = [datetime.strptime(y,'%m-%d-%Y') for x in train_period for y in x]
print(DATE)
Выход:
[[datetime.datetime(2013, 7, 31, 0, 0), datetime.datetime(2014, 12, 31, 0, 0)], [datetime.datetime(2013, 8, 31, 0, 0), datetime.datetime(2015, 1, 31, 0, 0)], [datetime.datetime(2013, 9, 30, 0, 0), datetime.datetime(2015, 2, 28, 0, 0)], [datetime.datetime(2013, 10, 31, 0, 0), datetime.datetime(2015, 3, 31, 0, 0)], [datetime.datetime(2013, 11, 30, 0, 0), datetime.datetime(2015, 4, 30, 0, 0)]]
====
[datetime.datetime(2013, 7, 31, 0, 0), datetime.datetime(2014, 12, 31, 0, 0), datetime.datetime(2013, 8, 31, 0, 0), datetime.datetime(2015, 1, 31, 0, 0), datetime.datetime(2013, 9, 30, 0, 0), datetime.datetime(2015, 2, 28, 0, 0), datetime.datetime(2013, 10, 31, 0, 0), datetime.datetime(2015, 3, 31, 0, 0), datetime.datetime(2013, 11, 30, 0, 0), datetime.datetime(2015, 4, 30, 0, 0)]
Также вам следует изменить шаблон для отметки времени на %m-%d-%Y
, иначе у вас будут некоторые ошибки, поскольку datetime не сможет интерпретировать строку и построить объект даты.
ValueError: time data '7-31-2013' does not match format '%m-%d-%Y %H:%M'
И последнее, но не менее важное: ваша строка должна быть действительной датой !!! (нет 31st of Sept
или 31st of Nov
)