Sbarazzarsi di zeri iniziali per stringhe di data in Python? [duplicare]
-
22-09-2019 - |
Domanda
Questa domanda ha già una risposta qui:
- Python strftime - data senza 0 iniziale 17 risposte
C'è un modo agile per sbarazzarsi di zeri iniziali per stringhe di data in Python?
Nell'esempio che segue mi piacerebbe ottenere 12/1/2009 in cambio anziché 12/01/2009. Credo che avrei potuto usare le espressioni regolari. Ma a me che sembra eccessivo. C'è una soluzione migliore?
>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'
Vedere anche
Soluzione
@OP, non ci vuole molto a che fare un po 'di manipolazione delle stringhe.
>>> t=time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
>>> '/'.join( map( str, map(int,t.split("/")) ) )
'12/1/2009'
Altri suggerimenti
Una soluzione più semplice e leggibile è formattare da soli:
>>> d = datetime.datetime.now()
>>> "%d/%d/%d"%(d.month, d.day, d.year)
4/8/2012
Io suggerirei una semplice espressione regolare. Non è che questo è performace-critical, è vero?
Cerca \b0
e sostituirlo con nulla.
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'
Tuttavia, ho il sospetto che questo dipende implementazione strftime()
del sistema e potrebbe non essere completamente portatile per tutte le piattaforme, se la cosa vi interessa.