2

我应该与向我发送以下 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价值观来说是失败的(谁知道还有什么)。

感谢您的任何想法!

4

2 回答 2

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}
于 2012-01-19T14:25:23.017 回答
3

您确定该服务没有向您发送 JSON 吗?在这种情况下,您可以使用内置json.loads()函数(自 Python 2.6 起)对其进行解析。

于 2012-01-19T14:28:21.927 回答