Как преобразовать строчное значение в список?
Есть строка: "[1, 2, 3, 4]"
Как эту строку можно преобразовать в список?
Ответы (3 шт):
Автор решения: Jack_oS
→ Ссылка
Решение "в лоб", как иногда тут пишут ;) :
s = "[1, 2, 3, 4]"
arr = [int(i) for i in s.replace(']', '').replace('[', '').split(',')]
>>> arr
[1, 2, 3, 4]
Автор решения: MaxU
NOTE: не используйте
→ Ссылка
Вариант 1
from ast import literal_eval
expr_str = "[1, 2, 3, 4]"
res = literal_eval(expr_str)
Вариант 2
import json
res = json.loads(expr_str)
Вариант 3
import yaml
res = yaml.safe_load(expr_str)
PS yaml умеет парсить не вполне валидные JSON строки, например JSON строки с одинарными кавычками вместо двойных (по стандарту).
NOTE: не используйте eval()
результат:
In [204]: res
Out[204]: [1, 2, 3, 4]
Автор решения: TigerTV.ru
→ Ссылка
Еще 2 варианта, использующие регулярки:
- через замену скобок:
import re
a = " [1, 332, 35,4] "
a = [int(i) for i in re.sub('[\[\]]', '', a).split(',')]
print(a)
- поиск только чисел:
import re
b = " [1, 332, 35,4] "
b = [int(i) for i in re.findall('\d+', b)]
print(b)