Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

    
            
  •              Python strftime - fecha sin anteponer el 0 ?                                      17 respuestas                          
  •     
    

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

En el siguiente ejemplo me gustaría llegar 12/1/2009 a cambio de lugar de 12/01/2009. Creo que podría utilizar expresiones regulares. Pero para mí que parece un exceso. ¿Hay una solución mejor?

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

Ver también

  

Python strftime - fecha sin anteponer el 0

¿Fue útil?

Solución

@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'

Otros consejos

Una solución más simple y fácil de leer es para dar formato a usted mismo:

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

Me gustaría sugerir una manera muy sencilla expresión regular. No es que esto es performace-crítico, ¿verdad?

Búsqueda de \b0 y reemplazar 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 aplicación strftime() del sistema y puede que no sea totalmente portátil para todas las plataformas, si que importa a usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top