Pergunta

Esta pergunta já tem uma resposta aqui:

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

Python strftime - data sem liderar 0?

Foi útil?

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ê.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top