Erro de Strptime de Data e hora do Python: ‘-‘ é uma diretiva inválida no formato ‘% -m -% – d-% y% -H:% M:% S’

Eu sei que tem havido perguntas semelhantes, mas elas parecem ter a ver com o modo como o datetime lida (ou não lida) com fusos horários.

A configuração é um pouco complicada e provavelmente não é relevante para o problema, mas eu achei que era importante include o código como está, então um pouco de background:

Eu tenho um dictionary de matrizes. Cada uma dessas matrizes representa uma “tentativa” da mesma pessoa, mas ocorre em momentos diferentes. Em última análise, eu vou estar procurando o mais antigo desses encontros. Isso pode ser um pouco de uma solução de rotunda, mas eu estou convertendo todas as datas para objects de data e hora, encontrando o mais antigo e, em seguida, apenas usando esse índice para retirar a primeira tentativa:

Aqui está o que o código parece para configurar essa matriz de datetimes de tentativa:

for key in duplicates_set.keys(): attempt_dates = [datetime.strptime(attempt['Attempt Date'], "%-m-%-d-%y %-H:%M:%S") for attempt in duplicates_set[key]] 

Aqui está o formato de uma das strings de data original:

12-5-2016 3:27:58 PM

O que eu estou recebendo de volta é:

 ValueError: '-' is a bad directive in format '%-m-%d-%y %-H:%M:%S' 

Suponho que se refira aos traços colocados antes de ‘m’, ‘d’ e ‘H’, porque são decimais não preenchidos com zero. Por que isso está me dizendo isso?

%-* – para pular padding – é uma extensão GNU libc. Não faz parte do POSIX strftime e, portanto, não é garantido que seja portátil para sistemas em que suas chamadas de formatação de tempo não são eventualmente suportadas pela function de biblioteca C do strftime do GNU.

A documentação do módulo datetime Python especifica explicitamente as cadeias de caracteres de formato suportadas e essa extensão não é fornecida. Portanto, embora isso seja suportado na data GNU e no strftime() GNU strftime() , ele não está disponível no datetime Python.