我的文件中有很多这样的行
f(a, b)
f(abc, def)
f(a, f(u, i))
...
我被要求用Python编写一个程序,将字符串转换为以下格式:
a+b
abc+def
a+(u+i)
...
规则:f(a,b)-> a + b
我现在遵循的方法现在使用eval函数:
def f(a, b):
return "({0} + {1})".format(a,b)
eval("f(f('b','a'),'c')")
哪个返回
'((b + a) + c)'
但是,如您所见,我需要将字母作为字符串放置,以便eval函数在运行它时不会抛出NameError。
有什么方法可以让我从eval函数中获得相同的行为,而无需将字母声明为字符串?
最佳答案
评估在这里太过分了。这只是一个简单的字符串处理练习:
将第一个'f('和最后一个')'替换为''
将所有剩余的'f('替换为'('
将所有','替换为'+'
到此为止。
这假定字符“ f(”彼此相邻出现的唯一时间是当它代表对函数f的调用时。