在python中评估变量赋值语句时出现语法错误

时间:2021-07-22 10:46:38

标签: python python-3.x jupyter-notebook eval jupyter-lab

我正在使用 %run 魔法从另一个笔记本运行一个 jupyter 笔记本

我想以表单的形式给被调用的notebook传参数

%run notebook.ipynb param1=value1 param2=value2 ...

因此我创建了以下代码:

#sys.argv
p = ['data_csv=data2.csv','master=lala','data_dir=./data']
parameters = list(
    map(lambda s: re.sub('$', '"', s),
        map(lambda s: s.replace('=','="'),
            filter(
                lambda s: s.find('=') > -1,
                p
            )
        )
    )
)

for parameter in parameters:
    eval(parameter)

不幸的是我得到了

     data_csv="data2.csv"
             ^
SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:0)

正如 Klaus D. 评论的那样,eval 不能用于赋值,但 exec 可以,因此工作解决方案如下所示:

import sys
import re
p = ['data_csv=data2.csv','master=lala','data_dir=./data']
parameters = list(
    map(lambda s: re.sub('$', '"', s),
        map(lambda s: s.replace('=','="'),
            filter(
                lambda s: s.find('=') > -1,
                p
            )
        )
    )
)

for parameter in parameters:
    exec(parameter)