django/python将表示python字典的字符串转换为字典对象

Joh*_*ohn 1 python django

我有一个字符串,表示从db表返回的python字典,例如

{'name': 'John', 'email': 'test@test.com'}
Run Code Online (Sandbox Code Playgroud)

where {'name': 'John', 'email': 'test@test.com'}从数据库返回为字符串

然后我有一个函数接收字典作为**kwargs例如

def print_details(*args, **kwargs):
    name = kwargs.pop('name', None)
    email = kwargs.pop('email', None)

    print "%s - %s " % (name, email)
Run Code Online (Sandbox Code Playgroud)

我想要做

dict = DB return value
print_details(dict) 
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将字符串dict转换为python字典

我正在使用Django但是如果在Django中没有办法,那么Python显然也可以正常工作

小智 6

ast.literal_eval是一个非常有限,更安全的eval,只能证明文字(例如包含字符串,int,float,...文字的dicts,tuple或list literal).

JSON解析器也适用于更受限制的子集(bool是不同的,null而不是None,没有元组,甚至可能更多).同样,标准库可以做到这一点(并且有旧版Python版本的第三方解决方案).