Hello,
Dans un de mes programmes je cherche à transformer une chaîne en date. La chaîne peut avoir divers formats j'essaie donc tous les formats jusqu'à en trouver un qui marche mais pour ça j'ai une série d'exceptions imbriquées et je trouve que c'est très moche. Qu'est-ce que je pourrais faire de plus sympa en python ?
try:
d = time.strptime(s[:18], "%Y:%m:%d %H:%M:%S")
except :
try:
d = time.strptime(s[:16], "%Y:%m:%d %H:%M")
except :
try:
d = time.strptime(s[:16], "%Y:%m:%d:%H:%M")
except:
try:
d = time.strptime(s[:16], "%d/%m/%Y %H:%M") #14/02/2009 18:16
except :
try:
d = time.strptime(s[:16],"%Y-%m-%d %H:%M") #2008-07-31 20:33
except:
try:
d = time.strptime(s[:11], "%b %d %Y") #Nov 14 2007
except:
try :
d = time.strptime(s[:11],"%d %b %Y") #31 May 2009 12:4
except:
d = None
# y a pas d'expression ET/OU en python ?
Posté par NeoX . Évalué à 2.
# return
Posté par __o . Évalué à 2.
return time.strptime(s[:18], "%Y:%m:%d %H:%M:%S")
except:
try:
return time.strptime(s[:16], "%Y:%m:%d %H:%M")
except:
try:
...
[^] # Re: return
Posté par NeoX . Évalué à 2.
[^] # Re: return
Posté par __o . Évalué à 2.
Mais la proposition d'en dessous est beaucoup mieux.
# Une boucle...
Posté par Frédéric Péters (site web personnel) . Évalué à 8.
d = None
for format, length in (('%Y:%m:%d %H:%M:%S', 18), ('"%Y:%m:%d %H:%M', 16), ...):
....try:
........d = time.strptime(s[:length], format)
....except:
........continue
....break
[^] # Re: Une boucle...
Posté par norbs . Évalué à 2.
Merci !
# Exepression régulière
Posté par barmic . Évalué à 2.
try :
if match(bidule) :
# truc
elif match(machin) :
# trac
....
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Exepression régulière
Posté par norbs . Évalué à 1.
# hum
Posté par cho7 (site web personnel) . Évalué à 4.
C'est quoi le contexte de cette détection de format ?
[^] # Re: hum
Posté par norbs . Évalué à 1.
c'est pour lire des entêtes exif qui sont plutôt au format US (MM/JJ).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.