Python代码自动将解析后的json对象分配给它们的原始名称

Python代码自动将解析后的json对象分配给它们的原始名称,python,json,Python,Json,我已经转储了几个需要存储在json对象中的变量,如下所示- def write_json(): variable = {} variable['p_id'] = p_id variable['s_id'] = s_id variable['t_id'] = t_id variable['b_start'] = b_start variable['b_end'] = b_end variable['wsp_after'] = wsp_afte

我已经转储了几个需要存储在json对象中的变量,如下所示-

def write_json():
    variable = {}
    variable['p_id'] = p_id
    variable['s_id'] = s_id
    variable['t_id'] = t_id
    variable['b_start'] = b_start
    variable['b_end'] = b_end
    variable['wsp_after'] = wsp_after
    variable['h_id'] = h_id
    variable['word'] = word
    variable['norm_word'] = norm_word
    variable['lemma'] = lemma
    variable['pos'] = pos
    variable['ner'] = ner
    variable['dep'] = dep
    variable['quote'] = quote
    variable['ch_id'] = ch_id

    with open('variable.json', 'w') as fp:
        json.dump(variable,fp, sort_keys = True)
我想写一段代码,自动将这些变量分配到适当的位置,就像从“X.py”导入中编写代码一样*

这就是我试过的-

def get_variables():
    with open('variable.json', 'r') as fp:
        variable = json.load(fp)
    for key in variable:
        global key
        key = variable[key]
然而,当我试图打印原始值时-

    print t_id
NameError: name 't_id' is not defined
我需要做什么来实现我想要的,而不是繁琐的打字

t_id = variable['t_id']
.
.
.

对于我转储的每个变量?

您当前的代码不起作用,因为以下几行只是绑定了一个名为
'key'
的全局变量(并对循环中的后续值重新绑定):

global key
key = variable[key]
虽然我不确定您的设计是否真的很好,但如果您确定希望json文件中的所有值都作为全局变量,我会将循环替换为:

globals().update(variable)
globals()
函数返回一个包含当前模块所有全局变量的字典。与从
locals()
(可能是本地名称空间的副本,而不是它的实际实现)获得的字典不同,您可以修改
globals()
字典,并在以后像normal一样使用变量。

以下是解决方案-

with open('variable.json', 'r') as fp:
    variable = json.load(fp)

for key in  variable.keys():
    exec(key + " = variable['" + key + "']")
以前的问题是,每个“键”都是字符串,而不是对象。
使用exec函数成功地将每个字符串解析为一个对象,并按照上面给出的方法使用它,得到问题中所问的结果。

我也在函数外部尝试了同样的代码,没有使用resultsvariable=dict(line.split(“,”)表示行in open('variable.json','r'),现在这个问题已经重新打开,请将您的解决方案添加为答案(而不是问题的附录)。