如何将字符串var作为函数调用?

时间:2019-12-03 06:02:49

标签: python

a="string"
b="replace("str","")"
c=a.b
Expected output should be : ing

其弹出错误,指出str不是属性。

如何调用此功能?但是只能使用上述格式。请告诉我。仅使用字符串

4 个答案:

答案 0 :(得分:2)

您将b更改为:

b = 'replace("str","")'

然后您可以执行以下操作:

c = eval(eval('"a."') + eval('b'))

答案 1 :(得分:0)

def func(char, my_string):
    result = my_string.replace(char, "")
    return result

final_string = func("str", "string")
print(final_string)

结果:      ing

我不确定是否可以仅使用“字符串”来做您想做的事

答案 2 :(得分:0)

请我知道。但是至少它不如)b+'.'+a(lave糟糕。向后读。

这使用ast模块将"replace('l','')"解析为'replace', ['l', '']。这仅适用于带有常量字符串参数的函数调用。在此示例中,确实必须用单引号替换双引号,但它也可以在'replace("l","")'上使用。

import ast

loan = 'olalt'

a="loan"
b="replace('l','')"

p = ast.parse(b).body[0].value
name = p.func.id
args = [arg.s for arg in p.args]

c=getattr(globals()[a], name)(*args)
c

答案 3 :(得分:-1)

Replace是python中的内置函数。不要将内置函数用双引号引起来,而是使用以下几行

a = "string"
b = a.replace("str","")
print(b)

b的输出是

ing