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)]