Python - 将一串数字转换为int列表

时间:2013-10-12 12:50:31

标签: python string list integer

我有一串数字,比如:

example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'

我想将其转换为列表:

example_list = [0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]

我尝试过类似的事情:

for i in example_string:
    example_list.append(int(example_string[i]))

但是这显然不起作用,因为字符串包含空格和逗号。但是,删除它们不是一种选择,因为像“19”这样的数字会被转换为1和9.你能帮我解决这个问题吗?

6 个答案:

答案 0 :(得分:52)

在逗号上拆分,然后映射到整数:

map(int, example_string.split(','))

或使用列表理解:

[int(s) for s in example_string.split(',')]

如果你想要一个列表结果,后者在Python 3上效果更好。

这是有效的,因为int()容忍空格:

>>> example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'
>>> map(int, example_string.split(','))  # Python 2, in Python 3 returns iterator object
[0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]
>>> [int(s) for s in example_string.split(',')]
[0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]

分割只是一个逗号也更容忍变量输入;如果在值之间使用0,1或10个空格并不重要。

答案 1 :(得分:7)

我想最脏的解决方案就是:

list(eval('0, 0, 0, 11, 0, 0, 0, 11'))

答案 2 :(得分:6)

number_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'

number_string = number_string.split(',')

number_string = [int(i) for i in number_string]

答案 3 :(得分:4)

它应该有用

example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'
example_list = [int(k) for k in example_string.split(',')]

答案 4 :(得分:4)

您还可以在分割字符串

上使用列表理解
[ int(x) for x in example_string.split(',') ]

答案 5 :(得分:2)

试试这个:

import re
[int(s) for s in re.split('[\s,]+',example_string)]