Преобразование строкового представления списка в список объектов [дубликат]
этот вопрос уже есть ответ здесь:
У меня есть строка, которая выглядит идентично список, скажем так:
fruits = "['apple', 'orange', 'banana']"
как можно было бы преобразовать это в объект списка?
3 ответа:
>>> fruits = "['apple', 'orange', 'banana']" >>> import ast >>> fruits = ast.literal_eval(fruits) >>> fruits ['apple', 'orange', 'banana'] >>> fruits[1] 'orange'
как указано в комментариях АСТ.literal_eval - это безопасное. Из документов:
безопасно вычислить узел выражения или строку, содержащую Python выражение. Предоставленная строка или узел могут состоять только из после питона буквальном структур: строки, числа, кортежи, списки, предсказывает, логические, и никто.
Это может быть использовано для безопасной оценки строк, содержащих Python выражения от ненадежные источники без необходимости разбора ценит себя.
простой вызов
eval()
будет делать:fruits = eval("['apple', 'orange', 'banana']") fruits > ['apple', 'orange', 'banana']
или как объяснено в этом статьи, то же самое можно сделать немного более безопасно (что означает: без риска непреднамеренных побочных эффектов или инъекций вредоносного кода), как это:
fruits = eval("['apple', 'orange', 'banana']", {'__builtins__':None}, {})
это решение имеет то преимущество, что не зависит от дополнительных модулей.
Я думаю, что это АСТ.literal_eval для.
( http://docs.python.org/library/ast.html#ast.literal_eval )