Malheureusement, strptime
n'a pas de caractères de format pour "sauter un suffixe ordinal" -, je ferais sauter la première, avec un peu RE, puis analyser la chaîne "clear" qui en résulte. I.e. .:
>>> import re
>>> import datetime
>>> ordn = re.compile(r'(?<=\d)(st|nd|rd|th)\b')
>>> def parse(s):
... cleans = ordn.sub('', s)
... dt = datetime.datetime.strptime(cleans, '%d %B %Y')
... return dt.date()
...
>>> parse('5th November 2010')
datetime.date(2010, 11, 5)
Votre préférence pour date
vs datetime
est pas un problème bien sûr, c'est ce que la méthode .date()
de datetime
objets est pour ;-).
Les extensions tierces comme dateutil peuvent être utiles si vous avez besoin de faire beaucoup d'analyse de date "floue" (ou d'autres trucs liés à la date ;-), soit dit en passant.
+1. Élégant et Pythonique. –
'dateutil' est certainement le plus propre. – Oli