检查eval(字符串)是否在对象列表中。在Python中

时间:2013-03-28 02:42:34

标签: python string object eval

我有一个对象列表。我有一个用户输入的字符串。我需要检查并查看字符串是否在对象列表中。

例如:

string = "book"
object_list = [book, paper, pencil]
if eval(string) in object_list:
  #do this, etc

只要字符串在列表中,就可以正常工作。如果字符串是其他内容,例如: string ='ruler'

然后if eval(string)...语句出错: NameError: 'ruler' is undefined.

2 个答案:

答案 0 :(得分:2)

不要使用eval - 只需要创建一个dict映射,例如:

dispatch = {'book': book, ...}

然后使用它并让回溯发生 - 更加受控制......

或最坏情况下使用globals()

if globals()[string] in object_list:
    # do something...

答案 1 :(得分:1)

如果您需要检查字符串是否在列表中,为什么不使用,

if string in object_list:
    #code