I\'ve got a bunch of date strings in this form: -
30th November 2009
31st March 2010
30th September 2010
I want them like this: -
You can almost do this with a combination of strptime and strptime from the datetime module.
The problem we have is that the built-in formats support dates like 30 November 2010
but not 30th November 2010
. So in the example below I've used a regular expression substitution to strip out the problem characters. (The regular expression uses a look-behind to see if "st", "nd", "rd" or "th" is preceeded by a digit, and if so replaces it with the empty string, thus removing it from the string.)
>>> import re
>>> from datetime import datetime
>>> mydate = "30th November 2009"
>>> mydate = re.sub("(?<=\d)(st|nd|rd|th)","",mydate)
>>> mydate
'30 November 2009'
>>> mydatetime = datetime.strptime(mydate,"%d %B %Y")
>>> mydatetime
datetime.datetime(2009, 11, 30, 0, 0)
>>> mydatetime.strftime("%Y%M%d")
'20090030'