我有一本字典如下
params = {
'response_type': 'token',
'client_id': o_auth_client_id,
'redirect_url': call_back_url,
'scope': 'activity heartrate location'
}
print urllib.urlencode(params)
和um编码
但结果
你得到的东西就像上面那样 不幸的是,空格被编码为+符号REDIRECT_URL = HTTP%3A%2F%2F127.0.0.1%3A8084%2Fagile_healtg%2Faccess_token%2F&安培; RESPONSE_TYPE =令牌安培; CLIENT_ID = XXXXXX&安培;范围=活动+心率+位置
但结果应为
范围=活性(%)20nutrition%20heartrate
如何在python中实现正确的空格编码?
答案 0 :(得分:1)
查看urlencode的文档。
在传递键值时,quote_plus
方法用于将空格更改为加号。您可以使用unquote_plus
方法删除加号,然后使用quote
以您希望的格式对其进行编码。
您基本上需要使用quote
方法作为参数
答案 1 :(得分:1)
这个程序可能会满足您的要求。
import urllib
def my_special_urlencode(params):
return '&'.join('{}={}'.format(urllib.quote(k, ''), urllib.quote(v, '')) for k,v in params.items())
params = {
'response_type': 'token',
'client_id': 'xxxxxx',
'redirect_url': 'http://example.com/callback',
'scope': 'activity heartrate location'
}
print my_special_urlencode(params)
结果:
redirect_url=http%3A%2F%2Fexample.com%2Fcallback&response_type=token&client_id=xxxxxx&scope=activity%20heartrate%20location