Функция Datetime, возвращающая ошибку с помощью datetime.strptime()

#python-3.x

#python-3.x

Вопрос:

Не могу понять, почему он возвращает ошибку, когда у меня есть год — месяц — дата в правильном порядке

 from datetime import datetime

dates = ['2017  May  12th' ,'2016  December  22nd' ,'2016  Novermber  17th' 
         ,'2016  November  3rd' ,'2016  November  17th' ,'2017  May  12th'
         ,'2017  December  22nd' ,'2017  November  17th' ,'2017  November  3rd' ,
         '2017  November  17th' ,'2017  May  12th' ,'2018  December  22nd' ,'2018  November  17th' 
         ,'2018  November  3rd' ,'2018  November  17th' ,'2019  May  12th' ,'2019  December  22nd' ,
         '2019  November  17th' ,'2019  November  3rd' ,'2019  November  17th' ,'2020  October  31st']

dates.sort(key = lambda dates: datetime.strptime(dates, '%Y  %b  %d')) 
 

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

1. Добро пожаловать в Stackoverflow, как потенциальный участник (вы), я предлагаю попытаться самостоятельно разобраться с простыми проблемами, подобными этой (для вашего же блага). Это поможет вам лучше понять, как работает код, и поможет вам лучше решать проблемы.

Ответ №1:

Ваша проблема связана с тем фактом, что оператор datetime.striptime(dates, '%Y %b %d') выдает ошибку, поскольку он не может правильно интерпретировать день. Чтобы легко устранить эту проблему, я бы сделал следующее:

 from dateutil import parser
from datetime import datetime

dates.sort(key = lambda dates: parser.parse(dates))