期間を表す文字列の内容を解析する必要があります。文字列の形式は、値/単位です (例: 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
)。
この入力を検証/解析する最良の方法は何ですか?