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

标签 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 已定义,被评估的语句看起来是正确的。

最佳答案

使用exec相反,它会评估语句。

在 locals(), locals() 中执行“self.solar_z = values[1]”

关于python - 即使给出了正确的代码,eval 也会给出语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6414991/

相关文章:

python - 终止长时间运行的 python 线程

PHP - 使用自定义标签进行模板化 - 这是对 eval 的合法使用吗?

python - 如何在 Django 中集成 304?

python - pymysql-将两次不同查询的结果合并成

python - 在不使用 Django 本身的情况下测试自定义 Django 中间件

php - 在没有 Eval 的情况下在字符串中执行 PHP 代码

javascript - 为什么 eval() 在 Javascript 中给出未定义的值?

python - 使用 torchtext 和文本序列作为输入

bash - 从另一个函数调用时,函数中的子 shell 无法找到基本的 bash 命令

python - eval() 总是错误的吗?