Removendo zeros à esquerda no strftime do Python

Atualização: Veja o comentário abaixo de aloschilov para a melhor maneira de remover zeros à esquerda, que é usar um – antes do formatador (após%), por exemplo:% -H. Eu não conhecia essa sintaxe quando escrevi esta dica.

O strftime do Python não tem opções para dias ou horas com um único dígito, o que significa que você pode acabar com formatos de aparência muito clínica, como:

14h24 – 09 de janeiro de 2014

Uma maneira simples de corrigir isso é combinar o poder do strftime e da formatação de strings regulares. Junto com um pequeno truque de mod, você pode obter formatos de aparência mais amigáveis ​​aos humanos desta maneira:

d.strftime('%d:%%M %%p - %d %%b %%Y' % (
d
.hour % 12 if d.hour % 12 else 12, d.day))

que retorna, por exemplo:

14h24 – 9 de janeiro de 2014