Unicode在python中可调用

Unicode在python中可调用,python,Python,我有一些用Python编写的方法,比如一、二、三 在我的JSON配置文件中,我有x=1,y=2和z=3 然后,Python代码如下所示: temp=json.load(above json file) a=temp["x"] a() 上述代码给出了一个错误: 错误:Unicode无法调用 请查看它并帮助我解决这个问题。您从json文件中得到的是一个以unicode字符串作为值的python dict。这些unicode字符串与函数名匹配的事实并不

我有一些用Python编写的方法,比如一、二、三

在我的JSON配置文件中,我有x=1,y=2和z=3

然后,Python代码如下所示:

        temp=json.load(above json file)
        a=temp["x"]
        a()
上述代码给出了一个错误:

错误:Unicode无法调用


请查看它并帮助我解决这个问题。

您从json文件中得到的是一个以unicode字符串作为值的python dict。这些unicode字符串与函数名匹配的事实并不会使unicode字符串成为函数的别名-您必须自己处理此映射。您想要的是:

def one():
    print "in one"

def two():
    print "in two"

def three():
    print "in three"

functions = {
    "one": one,
    "two": two,
    "three": three,
}

# directly write it as a python dict
temp = {
    "x": "one",
    "y": "two",
    "z": "three",
}

funcname = temp["x"]
func = functions[funcname]
func()

您的json配置文件看起来不像json文件。并格式化代码以显示在这里。{x:ONE,Y:TWO,Z:THREE}这是实际的json格式。这是有效的json,我已经用jsonlint.com确认了这一点。假设json与方法完全匹配,您可以使用globals[string_version_of_function_name]或构建本地函数字典。@Trengot注意,如果数据来自不可信的源,这显然是危险的。@crmk_а。我会用当地的字典,或者至少先整理一下名字。谢谢布鲁诺。但是我不应该在python文件中本地映射函数。我的python是一个应用程序脚本,它应该能够在不做任何修改的情况下与各种开放源代码进行通信,因为映射始终是JSON格式的。:-您可能应该提到,有一种方法可以通过局部变量将字符串转换为名称。我是python新手,您能否请breiftl;dr:不是a,而是本地人[a]。