我应该与在线服务进行沟通,该服务向我发送以下数据urlencoded:
data_to_process = {...}
args = {'args0': data_to_process, 'action': 'save'}
result = urllib2.urlopen(..., urllib.urlencode(args), ...)
感兴趣的主要数据存储在data_to_process
字典中。我想找回原来的字典,它应该只包含字符串,数字和布尔值。你怎么能实现这个目标?
我试过
eval(dict_str,{'__builtins__': None})
但False
值失败(谁知道还有什么)。
感谢任何想法!
答案 0 :(得分:3)
使用ast.literal_eval
:
>>> from ast import literal_eval
>>> test = repr({"ham": True, 42: "spam", "foo": "bar"})
>>> test
"{42: 'spam', 'foo': 'bar', 'ham': True}"
>>> literal_eval(test)
{42: 'spam', 'foo': 'bar', 'ham': True}
答案 1 :(得分:3)
您确定该服务没有向您发送JSON吗?在这种情况下,您可以使用内置的json.loads()
函数解析它(自Python 2.6起)。