You can almost do this with a combination of strptime and strptime from the datetime module .
The problem is that the built-in formats support dates like 30 November 2010 , but not the 30th November 2010 . So, in the example below, I used the regex substitution to cross out the problematic characters. (The regular expression uses appearance to see if "st", "nd", "rd", or "th" precedes a digit, and if it replaces it with an empty string, thereby 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'
Dave webb
source share