我有一个包含很多这样行的文件
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 函数中获得相同的行为,但无需将字母声明为字符串?
最佳答案
eval 在这里有点矫枉过正。这只是一个简单的字符串处理练习:
- 将第一个 'f(' 和最后一个 ')' 替换为 ''
- 将所有剩余的 'f(' 替换为 '('
- 用'+'替换所有','
大功告成。
这假设字符“f(”唯一一次出现在彼此旁边是它应该表示对函数 f 的调用。
关于python - 使用 Python 中的 eval 函数来翻译字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23476017/