nnikolyaa
@nnikolyaa

Как преобразовать «[a,b,c]» в [a,b,c]?

Есть строка "[a,b,c]" из неё нужно сделать массив [a,b,c]
По типу .split() .join() .map(), но для строка >> массив
  • Вопрос задан
  • 207 просмотров
Решения вопроса 4
profesor08
@profesor08
import re

str = "[1 , 2,3]";

matches = re.finditer(r"\[\s*([^)]+?)\s*\]", str, re.MULTILINE)

arr = []

for matchNum, match in enumerate(matches, start=1):
    arr = re.split(r"\s*,\s*", match.group(1))

print(arr)
Ответ написан
Комментировать
ast.literal_eval
In [1]: from ast import literal_eval

In [2]: literal_eval("[1, 2, 3]")
Out[2]: [1, 2, 3]
Ответ написан
MinTnt
@MinTnt
exec("s = [1,2,3]")

s = eval("[1,2,3]")
Ответ написан
Комментировать
@Drill
a = "[1, 22   , 3, ad,   Bc, 3.5]"

lst=[]
for elem in re.findall('([\w.]+)', a):
    if elem.isnumeric():
        lst.append(int(elem))
    else:
        try:lst.append(float(elem))
        except:lst.append(elem)


print(lst)
[1, 22, 3, 'ad', 'Bc', 3.5]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
D1os
@D1os
Начинающий программист
Ну я бы попробовал обычным генератором. Это просто, не нужно импортировать сторонние модули.
string = "[a, b, c]"

# Создаём список и запихиваем туда всё из данной строки, кроме того, что находится в условиях
arr = [i for i in string if i != "[" and i != "]" and i != "," and i != " "]

print(arr)

Но эта система - такое. Потому что, если придётся хранить запятые или скобки (не знаю для чего), нужно будет усложнять условия, и генератор уже вряд ли поможет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы