我需要解析代表时间段的字符串的内容。字符串的格式为值/单位,例如:1s、60min、24h。我会将实际值(一个 int)和单位(一个 str)分隔为单独的变量。
目前我这样做:
def validate_time(time):
binsize = time.strip()
unit = re.sub('[0-9]','',binsize)
if unit not in ['s','m','min','h','l']:
print "Error: unit {0} is not valid".format(unit)
sys.exit(2)
tmp = re.sub('[^0-9]','',binsize)
try:
value = int(tmp)
except ValueError:
print "Error: {0} is not valid".format(time)
sys.exit(2)
return value,unit
但是,它并不理想,因为像 1m0 这样的东西也(错误地)被验证(value=10
,unit=m
)。
验证/解析此输入的最佳方法是什么?