一尘不染

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

python

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

我想将其转换为列表。我知道我可以使用eval(string)来获取列表,但是eval令我感到恐惧,因为它可能会造成灾难(并且因为我可以获取非列表作为有效输出)。还有另一种更安全的方式将此字符串转换为列表吗?我知道这是一个列表,所有不是列表的数据都是无效数据(应该检查和/或抛出错误)。


阅读 308

收藏
2021-01-20

共1个答案

一尘不染

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

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

我确信其他人会告诉您您做错了什么,或者使用像JSON这样的库来传输像这样的任意数据结构,我不会不同意。

2021-01-20