0

给定字符串"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

我在这里想要的只是获取and的列表。如果没有数字,那么我应该得到一个空字符串,以便我可以进一步处理时间。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 回答