Python - преобразование строки чисел в список int

У меня есть строка чисел, например:

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. Не могли бы вы помочь мне с этим?

Ответ 1

Разделите запятые, затем наведите на целые числа:

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(','))
[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 пробелов.

Ответ 2

Я думаю, самое грязное решение:

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

Ответ 3

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]

Ответ 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(',')]

Ответ 5

Вы также можете использовать понимание списка в разделенной строке

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

Ответ 6

Попробуйте следующее:

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