python-2.7 - 将 Python(2.7) 字典转换为有效的查询参数
问题描述
因此,到目前为止,我一直在环顾四周,并找到了热门歌曲,但没有什么能完全符合 IMO 的要求。我想要做的是获取一个名为'result'的Python dict(注意'keyword_scores'是一个dicts列表,在'data'dict中。):
>>> print result
>>> {
u'data': {
u'clean_table': u'true',
u'keyword_scores': [
{
u'keyword': u'edited for easy reading on SO',
u'score': 0.4054651081081644
}
],
u'user_id': u'2'
}
}
并且,至少我认为,使用一些组合
urllib.urlencode()
和
urlparse.parse_qs()
能够将“query_string”连接到 URL 上以供在内部使用:
urllib2.Request(host_domain + some_post_data_endpoint + query_string)
我只建议这些库,因为这是我认为我需要根据我目前的搜索使用的库,但我对在这里使用的方法和工具持开放态度。我遇到的问题是,无论出于何种原因,我似乎需要在调用 parse_qs() 之前对其进行 urlencode(),但其他建议说我需要在编码之前先调用 parse_qs()。似乎没有一种简洁的方法可以将不完全“扁平”的字典转换为 urllib2.Request() 使用的查询参数。
先感谢您!
解决方案
我假设您有一些要将数据发布到的端点。然后您可以执行以下操作并在端点解码 url:
import urllib
result = {u'data': {u'clean_table': u'true',u'keyword_scores': [{u'keyword': u'edited for easy reading on SO', u'score': 0.4054651081081644}],u'user_id': u'2'}}
result_string = urllib.urlencode(result)
urllib2.Request(host_domain + some_post_data_endpoint + "?result=" + result_string)
例如,如果您的端点是 JS,您只需执行以下操作即可将结果作为同一个字典:
var url = new URL(window.location.href);
var result = JSON.parse(url.searchParams.get("result"));
推荐阅读
- c++ - Linux utf16 到 c++ 上的 utf8
- c# - 多个用户同时读取密钥时的 web.config 问题
- javascript - 返回一个带有承诺的布尔值
- python - 如何创建包含字典元素列表的嵌套列表?
- android - Google 助理对话操作
- java - 使用 jackson-dataformat-xml 库将属性设置为没有 POJO 的 xml 标签
- javascript - Lodash - 可选的记忆
- android - 按钮单击不起作用,不会将我带到另一个活动
- python - 访问数组的元素,它是矩阵中的元素
- c# - ContinueWith() 中的函数不起作用