sscanf needed
Lee Harr
lee at example.com
Sun Apr 17 16:53:58 EDT 2005
On 2005-04-17, Andrew E <andrew at nospam.com> wrote:
> Uwe Mayer wrote:
>> Hi,
>>
>> I've got a ISO 8601 formatted date-time string which I need to read into a
>> datetime object.
>> Is there a shorter way than using regular expressions? Is there a sscanf
>> function as in C?
>
> in addition to the other comments...
>
> I like re, because it gives me the most control. See below.
>
>
> import re
> import datetime
>
> class Converter:
>
> def __init__( self ):
> self.isoPattern = re.compile( "(\d\d\d\d)-(\d\d)-(\d\d)[tT
> ](\d\d):(\d\d):(\d\d)" )
>
> def iso2date( self, isoDateString ):
> match = self.isoPattern.match( isoDateString )
> if not match: raise ValueError( "Not in ISO format: '%s'" %
> isoDateString )
>
> return datetime.datetime(
> int(match.group(1)),
> int(match.group(2)),
> int(match.group(3)),
> int(match.group(4)),
> int(match.group(5)),
> int(match.group(6))
> )
>
> c = Converter()
>
>
> def demo( iso ):
> try:
> date = c.iso2date( iso )
> print "Input '%s' -> datetime: %s" % ( iso, date )
> except ValueError, e:
> print str(e)
>
> demo( "2005-04-21T12:34:56" )
> demo( "2005-04-21 12:34:57" )
> demo( "2005-04-2 12:34:57" )
>
>
That's nice. We should get some code in to the module
so that it is simple to round-trip the default datetime
timestamps.
More information about the Python-list
mailing list