在 Wolfram Mathematica 中,我可以使用 ToExpression 将字符串转换为表达式,并对表达式求值。
一个例子:
Reflection[expr_, a_] := expr /. a[l_] -> I*a[-l]
StringA = "Reflection[a[0]b[3],b]"
Output=ToExpression[StringA]
结果是 ia[0]b[-3]
但是,我不知道如何在 Python(或 Sympy)中实现这样的事情。
import numpy as np
import sympy as sp
a, b, c, d, e, f=map(sp.IndexedBase,['a','b','c','d','e', 'f'])
l1=map(sp.Wild,['l1'])
imagI=sp.I ## equals to Imaginary
def Reflection(expr, p):
expr=imagI*expr.replace(p[l1],p[-l1], map=False, simultaneous=True, exact=False)
return expr
fundict={'Reflection':Reflection}
pdict={'a':a,'b':b,'c':c,'d':d,'e':e,'f':f} ##A dictionary used for connect the string to existed variable
mydict=dict(fundict,**pdict) ## combine two dictionary
StringA ='Reflection(a(0)b(3),b)'
如何实现与 ToExpression 相同的工作?
还有更复杂的情况:
Reflection[expr_, a_] := expr /. a[l_] -> I*a[-l]
OAMHolo[expr_, a_, n_] := expr /. a[l_] -> a[l + n]
StringA = "Reflection[OAMHolo[Reflection[a[0]b[3],b],a,3],b]"
Output=ToExpression[StringA]
输出是 -a[3]b[3]
对于 python 案例,我尝试了 exec()、replace() 但这些都不起作用。那么如何在Python中实现这种情况呢?非常感谢你!
鸿蒙传说
相关分类