python - 使用 Python 中的 eval 函数来翻译字符串

标签 python eval

我有一个包含很多这样行的文件

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/

相关文章:

R - 使用非标准评估检查字符串是否是有效的数学表达式

python: ValueError: 加载字典结构时字符串格式错误

JavaScript:通过从字符串中检索变量名来更新对象值

python - Django 中的 ImageKit

python - pandas 中具有自定义值权重的虚拟编码

python - 如何生成其中出现另一个字符串的字符串列表

php - eval(),有什么意义呢?

python - 我应该如何在使用实例属性和类属性之间做出选择?

python - 神经网络的反向传播 - Python

python - eval() 与 input() 的行为