ast.literal_eval 不工作(列表的python 字符串到列表)

Dav*_*Lee 0 python string eval list abstract-syntax-tree

我正在尝试将列表的以下字符串转换回列表。

[('zX7XjZ1Vwai5UbqNDDJ1NQ', 570512, [155])]
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这两种方法eval()ast.literal_eval但是由于某种原因,当我打印转换后的字符串的类型时,它仍然是一个字符串(但删除了引号)

我也试过使用 json.loads()

似乎无论我多么努力,我都无法将这个列表字符串转换为 Python 列表!

Ste*_*sop 5

您可能有一组额外的引号,未显示在问题中,包含在您正在评估的文字中:

[('zX7XjZ1Vwai5UbqNDDJ1NQ', 570512, [155])]
Run Code Online (Sandbox Code Playgroud)

是一个列表,而:

"[('zX7XjZ1Vwai5UbqNDDJ1NQ', 570512, [155])]"
Run Code Online (Sandbox Code Playgroud)

是一个字符串。

所以,

ast.literal_eval("[('zX7XjZ1Vwai5UbqNDDJ1NQ', 570512, [155])]")
Run Code Online (Sandbox Code Playgroud)

返回一个列表,而:

ast.literal_eval('''"[('zX7XjZ1Vwai5UbqNDDJ1NQ', 570512, [155])]"''')
Run Code Online (Sandbox Code Playgroud)

返回一个字符串。在这些作为 Python 源代码编写的示例中,嵌套引号变得冗长,但您可能已经"[('zX7XjZ1Vwai5UbqNDDJ1NQ', 570512, [155])]"从文件中读取了内容。