Как преобразовать строчное значение в список?

Есть строка: "[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

Вариант 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 варианта, использующие регулярки:

  1. через замену скобок:
import re

a = " [1,   332,    35,4]   "
a = [int(i) for i in re.sub('[\[\]]', '', a).split(',')]
print(a)
  1. поиск только чисел:
import re

b = " [1,   332,    35,4]   "
b = [int(i) for i in re.findall('\d+', b)]
print(b)
→ Ссылка