Deshacerse de los ceros iniciales para las cadenas de fecha en Python? [duplicar]
-
22-09-2019 - |
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
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.