gpt4 book ai didi

python - 如何在字符串中动态更改变量的值?

转载 作者:行者123 更新时间:2023-12-04 08:58:59 25 4
gpt4 key购买 nike

我从文本 e-g s = "a&(b|c)" 中提取了一个数学字符串我想使用 eval(s)但在此之前,我必须为变量赋值,例如:

a, b, c  = somefuction()
我如何动态地做到这一点
r = re.findall("\w+", s)    
r[0], r[1], r[2] = somefunction()
然后将这些值传回变量并使用 eval()在上面。
我的最终输出应该根据 a、b、c 的值给我 True of False

最佳答案

假设 findall确实找到了您的变量,并且您的函数返回了适当的元组,然后您可以使用 exec设置变量:

r = re.findall("\w+", s)
vars = ', '.join(r)
exec(vars + ' = somefunction()')
在您的示例中,这将构造字符串 a, b, c = somefunction()并执行它,导致在当前命名空间中设置变量。
由于您在评论中声明变量的数量可能会有所不同,因此您可能希望将该数字发送到您的函数:
exec('{} = somefunction({})'.format(vars, len(r)))
或者,如果您的函数始终返回相同数量的元素,但根据提取的数学表达式可能不会使用一个或多个元素,您可能需要附加或前置 _ (下划线)到 vars字符串来代替未使用的值。

关于python - 如何在字符串中动态更改变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63652108/

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