我想检查是否有任何字符串是有效的小时范围(%H%M-%H%M格式),例如:
12:00-13:00 # that is valid
我尝试过:
try:
time.strptime('12:00-13:00','%H:%M-%H:%M')
return True
except ValueError:
return False
但是会引起正则表达式错误:
error: redefinition of group name 'H' as group 3; was group 1 at position 47
您能指出解决方法吗?
谢谢!
答案 0 :(得分:4)
您可以在-
上分割字符串,然后检查结果列表中的元素数是否为2
。
如果是,则分别解析两个日期时间,然后根据是否可以成功解析两个日期时间来返回True
或False
。
import time
def func(s):
#Split string on -
times = s.split('-')
#If number of elements are not two, return False
if len(times) != 2:
return False
else:
try:
#Try to parse both datetimes independently, if you can, return True, otherwise return False
time.strptime(times[0],'%H:%M')
time.strptime(times[1], '%H:%M')
return True
except:
return False
print(func('12:00-13:00'))
#True
print(func('12:00-25:00'))
#False
print(func('00:00-25:00'))
#False
print(func('12:00'))
#False
print(func('abcd-efgh'))
#False
print(func('12:00-efgh'))
#False
答案 1 :(得分:1)
下面的代码应该可以帮助您快速找到解决方案。 注意:给定的程序包可以更好地处理错误/异常和日期时间对象转换。
from datetimerange import DateTimeRange
try:
time_range = DateTimeRange("12:00", "23:00")
print(time_range)
except ValueError as error:
print(error)