如何在Python中动态调用字符串操作?
动态执行字符串操作指令的解决方案
你可以用eval()实现需求,它并非只支持整数操作,只要是合法的Python表达式(包括字符串的链式调用)都能处理。
具体实现代码
# 数据库取出的字符串需转义为Python可识别格式,这里还原示例 func_to_exec = 'split("|")[0].split(",")[1]' pl = 'mancity,manunited,arsenal|2|3|4|5' # 拼接表达式并执行 result = eval(f"pl.{func_to_exec}") print(result) # 输出: manunited
关键说明
eval()会把传入的字符串当作Python表达式执行,这里将变量pl和操作指令拼接成完整调用语句pl.split("|")[0].split(",")[1],直接得到执行结果。- 如果数据库返回的指令包含HTML转义字符(比如原代码中的
"),需要先转义为Python的引号("或'),否则会触发语法错误。
安全提醒
如果数据库中的操作指令来自不可信来源,直接用eval()存在代码注入风险。这种情况下建议用ast.parse()解析表达式,限制仅允许调用字符串的合法方法(比如split、strip等),避免执行恶意代码。
内容的提问来源于stack exchange,提问作者nebuchadnezzar
相关产品推荐
相关产品推荐

