К сожалению, strptime
не имеет символов формата для «пропуска порядкового суффикса» - поэтому я сначала сделал бы пропуск, с небольшим RE, а затем проанализировал полученную «чистую» строку. 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)
Ваши предпочтения date
против datetime
, конечно, не проблема, вот для чего нужен .date()
метод datetime
объектов; -).
Сторонние расширения, такие как dateutil , могут быть полезны, если вам нужно много «нечеткого» анализа дат (или, между прочим, другой причудливый материал, связанный с датами ;-).