2013-07-25 54 views
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 

全我在這裏想要獲得列表numberunit。如果沒有數字,我應該得到一個空字符串,以便我可以進一步處理時間。

此外,如果number不是字符串,就像上面的separate()函數返回一樣。

+0

不,它仍然是一個字符串,即使它包含一個數字。 –

回答

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

處理正則表達式對我來說一直很困難。我通常跑掉形式正則表達式。你從哪裏學到的? :) –

+2

艱難的方式。練習,練習,練習。 –

相關問題