如何从一个简单的字符串构造一个timedelta对象 [英] How to construct a timedelta object from a simple string
本文介绍了如何从一个简单的字符串构造一个timedelta对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在编写一个函数,该函数需要将timedelta输入作为字符串传递。用户必须输入诸如 32m或 2h32m,甚至是 4:13或 5hr34m56s之类的东西...是否存在已经实现了这种东西的图书馆或东西?
I'm writing a function that needs a timedelta input to be passed in as a string. The user must enter something like "32m" or "2h32m", or even "4:13" or "5hr34m56s"... Is there a library or something that has this sort of thing already implemented?
推荐答案
对于第一种格式(5hr34m56s),您应该使用正则表达式进行解析
For the first format(5hr34m56s), you should parse using regular expressions
基于解决方案的解决方案:
Here is re-based solution:
import re
from datetime import timedelta
regex = re.compile(r'((?P<hours>\d+?)hr)?((?P<minutes>\d+?)m)?((?P<seconds>\d+?)s)?')
def parse_time(time_str):
parts = regex.match(time_str)
if not parts:
return
parts = parts.groupdict()
time_params = {}
for (name, param) in parts.iteritems():
if param:
time_params[name] = int(param)
return timedelta(**time_params)
>>> from parse_time import parse_time
>>> parse_time('12hr')
datetime.timedelta(0, 43200)
>>> parse_time('12hr5m10s')
datetime.timedelta(0, 43510)
>>> parse_time('12hr10s')
datetime.timedelta(0, 43210)
>>> parse_time('10s')
datetime.timedelta(0, 10)
>>>
这篇关于如何从一个简单的字符串构造一个timedelta对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文