string"5mins"
を指定すると、 のように区切りたいと思い[5, 'mins']
ます。私はやってみました:
>>> re.findall(r"\d+|\D+", '5mins')
['5', 'mins']
これはうまくいくようですが:
>>> def separate(string):
... return re.findall(r"\d+|\D+", string)
...
>>> print(separate('3hours'))
['3', 'hours']
>>> print(separate('7secs'))
['7', 'secs']
>>> print(separate('now'))
['now']
この方法の問題は、ValueError
割り当てを行った場合に得られることです。
>>> number, unit = separate('now')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
ここで必要なのは、 と のリストを取得することだけです。数字がない場合は、さらに時間を処理できるように、空の文字列を取得する必要があります。number
unit
さらに、上記の関数の戻り値number
のように、文字列ではない場合も問題ありません。separate()