给定字符串"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()
函数返回一样好。
答案 0 :(得分:7)
>>> re.match(r"(\d+)?(\D+)?$", '5mins').groups()
('5', 'mins')
>>> re.match(r"(\d+)?(\D+)?$", 'now').groups()
(None, 'now')