Débarrassez-vous des zéros pour les chaînes leader de la date en Python? [dupliquer]

StackOverflow https://stackoverflow.com/questions/2309828

  •  22-09-2019
  •  | 
  •  

Question

    

Cette question a déjà une réponse ici:

    
            
  •              Python strftime - date sans le 0                                      17 réponses                          
  •     
    

Y at-il un moyen agile pour se débarrasser des zéros pour les chaînes leader de la date en Python?

Dans l'exemple ci-dessous, je voudrais obtenir 12/1/2009 en retour au lieu de 12/01/2009. Je suppose que je pourrais utiliser des expressions régulières. Mais pour moi, cela semble exagéré. Y at-il une meilleure solution?

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

Voir aussi

  

Python strftime - date sans le 0

Était-ce utile?

La solution

@OP, il ne faut pas beaucoup pour faire un peu de manipulation de chaînes.

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

Autres conseils

Une solution plus simple et lisible est de formater vous-même:

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

Je vous suggère une expression régulière très simple. Il est pas comme cela est performace-critique, est-il?

Rechercher \b0 et le remplacer par rien.

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

Cependant, je soupçonne que cela dépend de la mise en œuvre de strftime() du système et pourrait ne pas être totalement portable sur toutes les plateformes, si important pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top