gpt4 book ai didi

python - 如何将标准 timedelta 字符串转换为 timedelta 对象

转载 作者:行者123 更新时间:2023-11-28 21:56:36 26 4
gpt4 key购买 nike

将标准 timedelta 字符串转换为 timedelta 对象的最简单方法是什么?

我已经打印了几个 timedelta 对象并得到了这些字符串:

'1157 days, 9:46:39'
'12:00:01.824952'
'-1 day, 23:59:31.859767'

我知道我可以自己编写解析器,但有没有更简单的解决方案?

最佳答案

除了自己编写解析器之外,我找不到更好的方法。代码看起来很笨重,但它实际上是将字符串解析为字典,这不仅对创建 timedelta 对象很有用。

import re

def 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 timedelta

s1 = '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)

希望这能满足您的目的。

关于python - 如何将标准 timedelta 字符串转换为 timedelta 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21074100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com