即使给出正确的代码,eval也会出现语法错误

时间:2011-06-20 17:19:56

标签: python eval

我有以下代码,它使用eval函数:

lines = self.fulltext.splitlines()

CURRENT = 0

extractors = { "solar zenith angle" : (CURRENT, 1, "self.solar_z"),
                       "ground pressure" : (CURRENT, 2, "self.ground_pressure")                     

             }

print locals()

for line in lines:
    for label, details in extractors.iteritems():
        if label in line:
            if details[0] == CURRENT:
                values = line.split()
                eval("%s = values[%d]" % (details[2], details[1]))

然而,当我运行它时,我收到以下错误:

eval("%s = values[%d]" % (details[2], details[1]))
  File "<string>", line 1
    self.solar_z = values[1]
                 ^
SyntaxError: invalid syntax

这是为什么?已定义self.solar_z,并且eval'd的语句看起来是正确的。

2 个答案:

答案 0 :(得分:10)

使用exec代替,它会对语句进行评估。

exec "self.solar_z = values[1]" in locals(), locals()

答案 1 :(得分:7)

eval()评估表达式。 Python中的赋值是一种陈述。这不起作用。