如何将一串数字转换为列表

时间:2013-11-02 19:57:41

标签: python string integer

如何将主要包含数字的字符串拆分为列表?我尝试了str.split(),但由于每个数字都用逗号分隔,我无法将字符串转换为整数列表。 例如:

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

当我split时,我得到了

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

有没有办法将整数分隔成一个列表?

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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]
>>>