0

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

ここで必要なのは、 と のリストを取得することだけです。数字がない場合は、さらに時間を処理できるように、空の文字列を取得する必要があります。numberunit

さらに、上記の関数の戻り値numberのように、文字列ではない場合も問題ありません。separate()

4

1 に答える 1

7
>>> re.match(r"(\d+)?(\D+)?$", '5mins').groups()
('5', 'mins')
>>> re.match(r"(\d+)?(\D+)?$", 'now').groups()
(None, 'now')
于 2013-07-25T05:57:20.150 に答える