python - 如何在Python中替换方程中的变量

标签 python equation replace

我有一些方程式的字符串,其中包括变量。例如:

eq='(a+1)*c-d'

我还有一个包含变量值的字典。例如:

val={'a':5,'c':'k','d':'300n'}

正如您所看到的,在相同情况下变量的值可以是其他变量,并且在某些情况下并非 eq 中的所有变量都在 val 中。

我需要用 val 中的值替换 eq 中的所有变量。 当然,直接的代码将类似于:

for v in val.keys():
  eq=re.sub(v,val[v],eq)

但是这段代码在某些情况下会失败。例如,变量列表中将包含变量“n”和“nn”

那么,有人可以想出更好的解决方案吗? 谢谢。

最佳答案

尝试:

for k,v in val.items():
    eq = re.sub(r'\b' + k + r'\b', v, eq)

这将按变量的全名搜索变量,即如果 val = {'x': '5'} 并且方程包含“xx”、“x2”等子字符串,甚至“2x”,这些字符串不会被替换。

关于python - 如何在Python中替换方程中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12762638/

相关文章:

python - 我怎样才能看到 csrftoken?

python - Openerp : new module is not showing into module list

python - 这段在 python 中求解积分方程的代码有什么问题

C# dll 求解简单方程

python - 如何在 Python 中查找递归空目录?

python - Google colab 找不到目录(我的云端硬盘)

正则表达式:清理 HTML

c# - 替换不区分大小写的正则表达式需要注意什么?

c - 梯形法则问题

javascript - 如何清除或替换缓存的图像