如何分离给定字符串的整数/浮点数和字符串部分?

时间:2013-07-25 05:54:50

标签: python

给定字符串"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()函数返回一样好。

1 个答案:

答案 0 :(得分:7)

>>> re.match(r"(\d+)?(\D+)?$", '5mins').groups()
('5', 'mins')
>>> re.match(r"(\d+)?(\D+)?$", 'now').groups()
(None, 'now')