Livre -se dos principais zeros para strings de data em Python? [duplicado
-
22-09-2019 - |
Pergunta
Esta pergunta já tem uma resposta aqui:
- Python strftime - data sem liderar 0? 17 respostas
Existe uma maneira ágil de se livrar dos líderes de zeros para strings de data em Python?
No exemplo abaixo, gostaria de obter 1/12/2009 em troca, em vez de 12/01/2009. Acho que poderia usar expressões regulares. Mas para mim isso parece um exagero. Existe uma solução melhor?
>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'
Veja também
Solução
@OP, não é preciso muito para fazer um pouco de manipulação de cordas.
>>> t=time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
>>> '/'.join( map( str, map(int,t.split("/")) ) )
'12/1/2009'
Outras dicas
Uma solução mais simples e legível é formatá -la:
>>> d = datetime.datetime.now()
>>> "%d/%d/%d"%(d.month, d.day, d.year)
4/8/2012
Eu sugeriria uma expressão regular muito simples. Não é como se isso fosse crítico, é?
Procurar por \b0
e substitua por nada.
I. E.:
import re
newstring = re.sub(r"\b0","",time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y')))
>>> time.strftime('%-m/%-d/%Y',time.strptime('8/1/2009', '%m/%d/%Y'))
'8/1/2009'
No entanto, suspeito que isso depende do sistema strftime()
implementação e pode não ser totalmente portátil para todas as plataformas, se isso importa para você.