我有以下代码,它使用了 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
已定义,被评估的语句看起来是正确的。
最佳答案
使用exec相反,它会评估语句。
在 locals(), locals() 中执行“self.solar_z = values[1]”
关于python - 即使给出了正确的代码,eval 也会给出语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6414991/