Как мне преобразовать строку в формате list в реальный список python без использования eval() и exec() в python

#python

#python

Вопрос:

Например, convert_to_list('[4,5,[6,7],[8,[9,10]],11]') возвращает фактический список [4, 5, [6, 7], [8, [9, 10]], 11]

Эта проблема беспокоила меня в течение нескольких дней. Единственная проблема заключается в том, что я не могу использовать eval() или exec() функционировать.

редактировать: вам не разрешается импортировать какие-либо нестандартные библиотеки Python или использовать встроенные в Python функции eval() и exec() . Вам не разрешено использовать файлы. ( Это инструкция из моего курса python)

Комментарии:

1. Используйте ast.literal_eval() .

2. вам нужен стек (список с использованием append и pop ), начинайте новый список каждый раз, когда вы видите [ и заканчиваете этот список и возвращаетесь к предыдущему списку в стеке, когда видите ] . Очевидно, что это проблема домашнего задания, и вы не выполнили минимум даже того, что вы пробовали и почему это не сработало. Вы в основном сказали «решите мою проблему для меня», и это не то, для чего предназначен stackoverflow.

3. Привет, извините, это моя первая публикация в stack overflow, поэтому я не знал об этике здесь. Мой друг направил меня сюда. Чтобы ответить вам, я пробовал этот метод, но я застрял в списке внутри списка. Я мог бы поместить целые числа в список, но мне трудно поместить список в другой список, а затем поместить его в больший список.

4. @Barebear Если бы вы опубликовали свой код, вы бы получили больше сочувствия. Вы могли бы опубликовать другой вопрос, в который вы включаете написанный вами код и какую часть вы путаете или испытываете трудности, и это может дать лучшие ответы

Ответ №1:

Вы можете использовать модуль json

 list1='[4,5,[6,7],[8,[9,10]],11]'

import json
json.loads(list1)
  

вывод:

 [4, 5, [6, 7], [8, [9, 10]], 11]
  

Комментарии:

1. Привет, ваш метод, безусловно, может работать, однако я забыл упомянуть, что мы не можем импортировать библиотеки Python. (извините, этот вопрос из моего курса uni python)

2. Я обновлю, если получу ответ без использования какого-либо импорта.

3. Вы узнаете больше, если попытаетесь сделать это самостоятельно. Вам нужно написать лексер, который разбивает входные данные на токены «[«, «]», «,», и <число>, и вам нужно будет написать синтаксический анализатор, который понимает, как токены сочетаются друг с другом.