function to convert degree (hour), minute, seconds string to integer

2006-07-26 Thread google0
I know this is a trivial function, and I've now spent more time
searching for a surely-already-reinvented wheel than it would take to
reinvent it again, but just in case... is there a published,
open-source, function out there that takes a string in the form of
"hh:mm:ss" (where hh is 00-23, mm is 00-59, and ss is 00-59) and
converts it to an integer (ss + 60 * (mm + 60 * hh))?  I'd like
something that throws an exception if hh, mm, or ss is out of range, or
perhaps does something "reasonable" (like convert "01:99" to 159).
Thanks,
--dang
p.s.
In case this looks like I'm asking for a homework exercise, here's what
I'm using now.  It returns False or raises a ValueError exception for
invalid inputs.  I'm just wondering if there's an already-published
version.
def dms2int(dms):
"""Accepts an 8-character string of three two-digit numbers,
separated by exactly one non-numeric character, and converts it
to an integer, representing the number of seconds.  Think of
degree, minute, second notation, or time marked in hours,
minutes, and seconds (HH:MM:SS)."""
return (
len(dms) == 8
and 00 <= int(dms[0:2]) < 24
and dms[2] not in '0123456789'
and 00 <= int(dms[3:5]) < 60
and dms[5] not in '0123456789'
and 00 <= int(dms[6:8]) < 60
and int(dms[6:8]) + 60 * (int(dms[3:5]) + 60 * int(dms[0:2]))
)

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: function to convert degree (hour), minute, seconds string to integer

2006-07-27 Thread google0
John Machin wrote:
> [EMAIL PROTECTED] wrote:
> > I know this is a trivial function, and I've now spent more time
> > searching for a surely-already-reinvented wheel than it would take to
> > reinvent it again, but just in case... is there a published,
> > open-source, function out there that takes a string in the form of
> > "hh:mm:ss" (where hh is 00-23, mm is 00-59, and ss is 00-59) and
> > converts it to an integer (ss + 60 * (mm + 60 * hh))?  I'd like
> > something that throws an exception if hh, mm, or ss is out of range, or
> > perhaps does something "reasonable" (like convert "01:99" to 159).
> > Thanks,
> > --dang
>
> Have you considered time.strptime()?
>
> BTW, your function, given "00:00:00" will return 0 -- you may well have
> trouble distinguishing that from False (note that False == 0), without
> resorting to ugliness like:
>
> if result is False ...
>
> Instead of returning False for some errors and letting int() raise an
> exception for others, I would suggest raising ValueError yourself for
> *all* invalid input.
>
> You may wish to put more restrictions on the separators ... I would be
> suspicious of cases where dms[2] != dms[5]. What plausible separators
> are there besides ":"? Why allow alphabetics? If there's a use case for
> "23h59m59s", that would have to be handled separately. Note that
> "06-12-31" could be a date, "12,34,56" could be CSV data.
>
> Cheers,
> John

Good point about 0/False.  I don't think it would have bitten me in my
current program, given my expected (and filtered) inputs, but I might
have reused it in the future, and been bitten later.

I had looked at the time module, but apparently not long enough.
This does the trick:

def dms2int(dms):
int(time.mktime(time.strptime("2000-01-01 %s" % dms, "%Y-%m-%d
%H:%M:%S")))

I only need the minutes, but can work with seconds.  The only downside
is that I'm hardcoding an arbitrary date, but I can deal with that.

Thanks for your help, John!
--dang

-- 
http://mail.python.org/mailman/listinfo/python-list


Anyone using TestNG

2007-06-11 Thread google0
Is anyone porting TestNG to Python, or using it with Python any other
way (maybe via Jython?)?
Thanks,
--dang

-- 
http://mail.python.org/mailman/listinfo/python-list