我正在形成一个帖子请求。
mydict = {'key1': 'value@1', 'key2': 'value@2'}
encoded_dict = urllib.urlencode(mydict)
这将导致
key1=value%401&key2=value%402
我真正想要的是
key1=value@1&key2=value@2
还有其他方法吗?
如果你想做你自己的事情,你就必须编写自己的编码器。例如:
mydict = {'key1': 'value@1', 'key2': 'value@2'}
>>> "&".join("{}={}".format(*i) for i in mydict.items())
'key2=value@2&key1=value@1'
但是为什么不直接使用 JSON 呢?
我正在发布Lukas Graf的评论到这个答案,因为我认为这需要更加突出。
我遇到了一个问题,我试图对字符串进行编码以匹配 API 调用所期望的字符串。该 API 调用需要一个 json 有效负载,其中有一个编码数据值(很复杂 - 不是我的 API,所以我无法更改!)
无论如何,编码后的 json 值不需要
=
或 &
编码。为了跳过这些字符的编码,我使用了这个:
import urllib.parse
# more code here
parsed = urllib.parse.quote_plus(unencoded_string, safe='=&')
# more code here, too