¿Deshazte de los ceros iniciales para las cadenas de fecha en Python?

¿Existe una manera ágil de deshacerse de los ceros iniciales para las cadenas de fecha en Python?

En el siguiente ejemplo, me gustaría obtener el 01/12/2009 a cambio del 12/01/2009. Supongo que podría usar expresiones regulares. Pero a mí eso me parece una exageración. ¿Hay una solución mejor?

>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y')) '12/01/2009' 

Ver también

Strthime de Python – ¿fecha sin liderar 0?

@OP, no se necesita mucho para hacer un poco de manipulación de cadenas.

 >>> t=time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y')) >>> '/'.join( map( str, map(int,t.split("/")) ) ) '12/1/2009' 

Una solución más simple y legible es formatearla usted mismo:

 >>> d = datetime.datetime.now() >>> "%d/%d/%d"%(d.month, d.day, d.year) 4/8/2012 

Sugeriría una expresión regular muy simple. No es que esto sea crítico para el rendimiento, ¿verdad?

Busca \b0 y reemplaza con 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' 

Sin embargo, sospecho que esto depende de la implementación del sistema strftime() y puede que no sea totalmente portátil para todas las plataformas, si eso es importante para usted.