2013-11-02 50 views
0

如何將包含大多數數字的字符串拆分到列表中?我試過str.split(),但由於每個數字之間用逗號分隔,我無法將字符串轉換爲整數列表。 例如:如何將一串數字轉換爲列表

a='text,2, 3, 4, 5, 6' 

的時候我split我得到

b=['text,2,', '3,', '4,', '5,', '6'] 

有沒有什麼辦法整數隔離成一個列表?

回答

3

使用regex

>>> a = 'text,2, 3, 4, 5, 6' 
>>> import re 
>>> re.findall(r'\d+', a) 
['2', '3', '4', '5', '6'] 

使用str.isdigit和列表理解非正則表達式的解決方案:

>>> [y for y in (x.strip() for x in a.split(',')) if y.isdigit()] 
['2', '3', '4', '5', '6'] 

如果你希望字符串是剛剛轉換爲整數,然後對列表中的項目致電int()

>>> import re 
>>> [int(m.group()) for m in re.finditer(r'\d+', a)] 
[2, 3, 4, 5, 6] 

>>> [int(y) for y in (x.strip() for x in a.split(',')) if y.isdigit()] 
[2, 3, 4, 5, 6] 
+0

你可能已經忘了轉換y以INT(Y)。 –

2

這裏是不使用正則表達式的解決方案:

>>> a='text,2, 3, 4, 5, 6' 
>>> # You could also do "[x for x in (y.strip() for y in a.split(',')) if x.isdigit()]" 
>>> # I like this one though because it is shorter 
>>> [x for x in map(str.strip, a.split(',')) if x.isdigit()] 
['2', '3', '4', '5', '6'] 
>>> [int(x) for x in map(str.strip, a.split(',')) if x.isdigit()] 
[2, 3, 4, 5, 6] 
>>> 
相關問題