Python 我需要转换一个列表;将通过输入提供,因此它将成为字符串;回到列表中

Python 我需要转换一个列表;将通过输入提供,因此它将成为字符串;回到列表中,python,string,list,eval,undefined,Python,String,List,Eval,Undefined,正如线程标题中所述。 我还尝试使用eval()来输入这些列表,但这些列表包含字符串元素和其他(子-?)列表,例如: [Pacific, [-45,30,25], [120,59, 15]] 当提供这样的输入时,eval()仅对数字列表响应良好,但当应用于字符串时,这些字符串元素返回一个NameError,表示它们未定义。您需要在引号内输入字符串,即 ["Pacific", [-45,30,25], [120,59, 15]] 当您将其作为Pacific输入时,python的eval()函数将

正如线程标题中所述。
我还尝试使用
eval()
来输入这些列表,但这些列表包含字符串元素和其他(子-?)列表,例如:

[Pacific, [-45,30,25], [120,59, 15]]

当提供这样的输入时,
eval()
仅对数字列表响应良好,但当应用于字符串时,这些字符串元素返回一个
NameError
,表示它们未定义。

您需要在引号内输入字符串,即

["Pacific", [-45,30,25], [120,59, 15]]

当您将其作为
Pacific
输入时,python的
eval()
函数将查找名为
Pacific
的变量,因此您得到的名称错误

您的原始输入字符串是完全有效的字符串,这是一个安全的字符串,功能强大且(至少在我看来)简单的数据结构序列化和反序列化方法。为了读取(或保存)YAML字符串,您可能需要获取PyYAML:

sudo pip install pyyaml
然后,您可以完美地运行以下代码,以便将数据读入Python:

from yaml import load
pacific = load('[Pacific, [-45,30,25], [120,59, 15]]')

如果您使用的是
eval
,您还需要引用字符串,就像在代码中一样。此外,请使用
ast.literal\u eval
而不是eval…没问题!如果这回答了您的问题,请给它一个绿色的复选标记或向上投票^^^^^也许您可以警告他,并指向他使用
ast.literal\u eval
。请参阅
eval()
仅对不受信任的输入是危险的,如果你阅读他的帖子,你会看到他声明他将自己输入列表,只要OP信任自己。。。。。。。