gpt4 book ai didi

python - 将 eval() 与 undefined variable 一起使用

转载 作者:行者123 更新时间:2023-11-30 23:51:00 25 4
gpt4 key购买 nike

我想创建一个 Python 脚本,它接受字典的字符串表示形式并输出表示字典项目的元组列表。问题是,我希望它接受尚 undefined variable 。一个例子最好地说明了这一点:

输入:{'test': test}

输出:[('test': test)]

我创建了一些代码来读取字典并定义尚 undefined variable ,但是当我 eval() 结果时,它会替换为变量而不是变量名。

这是代码:

import sys
import re

if __name__ == "__main__":
instr = sys.argv[1]
success = False
while not success:
try:
indict = eval(instr)
success = True
except NameError, e:
defname = re.search("name '([^\']*)' is not defined", str(e))
locals()[defname.group(1)] = 0
print indict

对于上面定义的输入值,我希望它打印出来的字典能够与输入字符串完美匹配,但它却用 0 值替换了 test。因此脚本打印出:

{'test': 0}

我尝试过 ast.literal_eval,但对于文本中的任何变量名称都会抛出 ValueError: malformed string,即使它已被定义。

因此,我的问题是:有没有办法在不丢失变量名的情况下转换输入字典?

最佳答案

我会使用 ast 模块,但不会使用 literal_eval。遍历树,当找到变量引用时,只需将变量的名称插入到输出中即可。

关于python - 将 eval() 与 undefined variable 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7027312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com