我的文件中有很多这样的行

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的调用时。

10-08 05:38
查看更多