我正在尝试做这样的事情
更新 - 有关应用程序的一些详细信息
该应用程序向用户“公开”一些变量。公开变量的一个示例是 user_name。然后,应用程序的用户可以创建一个名为“user_name_upper”的新变量,该变量可以设置为 user_name.upper()。另一个例子是暴露变量 first_name 和 last_name,用户可以创建一个名为 'full_name = last_name.upper() + ',' + first_name.upper()' 的新变量。这是使用输入框 UI 元素输入的。所以没有钩子进入程序。或者把它想象成一个像 excel 这样的报告,我可以在其中创建一个新列来操作一些已经定义的变量。
这个应用程序的用户不是程序员。但是可以为他们提供一个示例列表,以找到解决字符串操作的方法
但是,我的表达式将用于字符串操作。类似“string3 = string1 + string2”的东西。在这里,我想将 string3 的值设置为附加 string2 的 string1 的值。或“string1 = string2.lower()”
我已经研究并得出结论,可以使用 eval 但非常危险。据我了解, ast_literal_eval() 不适用于像 lower() 这样的字符串操作方法,如此处所述Why does this string not work with ast.literal_eval
关于如何解决这个问题的任何建议?