Преобразование строки в список. Python [string.split() действует странно]

temp = "['a','b','c']"
print type(temp)
#string

output = ['a','b','c']
print type(output)
#list

поэтому у меня есть эта временная строка, которая в основном представляет собой список в строковом формате., Я пытаюсь включить его в список, но я не уверен, что это простой способ сделать это. я знаю один способ, но я бы не использовал regex

Если я использую temp.split(), я получаю

temp_2 = ["['a','b','c']"]

Ответ 1

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

Безопасно оценить выражение node или кодировку Unicode или Latin-1 строка, содержащая выражение Python. Строка или nodeсостоят только из следующих литеральных структур Python: строк, числа, кортежи, списки, dicts, booleans и None.

>>> from ast import literal_eval
>>> temp = "['a','b','c']"
>>> l = literal_eval(temp)
>>> l
['a', 'b', 'c']
>>> type(l)
<type 'list'>

Ответ 2

Вы можете использовать eval:

>>> temp = "['a', 'b', 'c']"
>>> temp_list = eval(temp)
>>> temp_list
['a', 'b', 'c']
>>> temp_list[1]
b