Как преобразовать строку в массив
например пользователь ввёл [1, 2, 3] в консоль
и как мне из этого сделать список.
пробовал так но не работает
array = []
exec("array = " + content)
# print(array)
if array[0] == 1:
print(1)
после exec проверяю массив, а он пустой
Ответы (3 шт):
Автор решения: chagins
→ Ссылка
# если content - это уже список
content = [1, 2, 3]
array = []
exec("array.extend(content)")
if array[0] == 1:
print(1)
# если content - это строка
content = '123'
array = []
exec("array.extend(int(i) for i in content)")
print(array)
if array[0] == 1:
print(1)
# если content - это строка '[1, 2, 3]'
import re
# имеем строку inp
inp = '[1, 2, 3]'
# забираем цифры в список
content = re.findall('\d+', inp)
array = []
exec("array.extend(content)")
print(array)
if array[0] == 1:
print(1)
Автор решения: Andy Pavlov
→ Ссылка
Не понял зачем Вам exec здесь нужен. Используете обычный парсинг.
Вариант 1. Через функции строки
text = '[1, 2, 3]'
parse = text.strip('[]').replace(' ', '').split(',') # список из строковых значений, потом можно преобразовать в нужный формат
Вариант 2. Через библиотеку json.
import json
text = '[1, 2, 3]'
parse = json.loads(text)
Вариант 3. Парсим через библиотеку re
parse = re.findall('([-+]?\d+)', text) # Если в строке-списке будут только целые числа
parse = re.findall('([-+]?\d*\.\d+|\d+)', text) # Если будут еще десятичные
Что у Вас получился список можно проверить функцией type(parse), которая выдаст <class 'list'>
В первом и третьем варианте на выходе будут списки из строк с числами. Их нужно будет преобразовать.
Автор решения: DGDays
→ Ссылка
Как вариант:
string = '[1, 2, 3]'
string = string[1:-1].replace(', ', '')
arr = []
for i in string:
arr.append(int(i))
print(type(arr))