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 に答える