除了自己编写解析器外,我找不到更好的方法。该代码看起来很庞大,但实际上是将字符串解析为字典,这不仅对创建timedelta对象有用。
import redef parse(s): if 'day' in s: m = re.match(r'(?P<days>[-d]+) day[s]*, (?P<hours>d+):(?P<minutes>d+):(?P<seconds>d[.d+]*)', s) else: m = re.match(r'(?P<hours>d+):(?P<minutes>d+):(?P<seconds>d[.d+]*)', s) return {key: float(val) for key, val in m.groupdict().iteritems()}测试:
from datetime import timedeltas1 = '1157 days, 9:46:39's2 = '12:00:01.824952's3 = '-1 day, 23:59:31.859767't1 = parse(s1)t2 = parse(s2)t3 = parse(s3)timedelta(**t1) # datetime.timedelta(1157, 35199)timedelta(**t2) # datetime.timedelta(0, 43201, 824952)timedelta(**t3) # datetime.timedelta(-1, 86371, 859767)
希望这可以满足您的目的。



