在不使用 Eval 的情况下在 Python 中将字符串转换为列表?

Jas*_*ion 4 python string eval list

我有一个字符串,是这样的:"[['Cheese', 72], ['Milk', 45], ['Bread', 22]]"

我想将其转换为列表。我知道我可以使用 eval(string) 来获取列表,但是 eval 使我感到害怕,因为它可能会带来灾难(并且因为我可以获得一个非列表作为有效输出)。是否有另一种更明智/更安全的方法可以将此字符串转换为列表?我知道这是一个列表,任何不是列表的都是无效数据(应该检查和/或抛出错误)。

Voo*_*OFX 5

如果你坚持这样做,你可以使用 ast.literal_eval 函数。

>>> import ast
>>> foo = "[['Cheese', 72], ['Milk', 45], ['Bread', 22]]"
>>> ast.literal_eval(foo)
[['Cheese', 72], ['Milk', 45], ['Bread', 22]]
Run Code Online (Sandbox Code Playgroud)

我相信其他人会告诉你你可能做错了什么,或者使用像 JSON 这样的库来传输这样的任意数据结构,我不会反对。