Python urlencode 不编码特殊字符

问题描述 投票:0回答:2

我正在形成一个帖子请求。

mydict = {'key1': 'value@1', 'key2': 'value@2'}
encoded_dict = urllib.urlencode(mydict)

这将导致

key1=value%401&key2=value%402

我真正想要的是

key1=value@1&key2=value@2

还有其他方法吗?

python python-2.7 urlencode
2个回答
3
投票

如果你想做你自己的事情,你就必须编写自己的编码器。例如:

mydict = {'key1': 'value@1', 'key2': 'value@2'}
>>> "&".join("{}={}".format(*i) for i in mydict.items())
'key2=value@2&key1=value@1'

但是为什么不直接使用 JSON 呢?


0
投票

我正在发布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
© www.soinside.com 2019 - 2024. All rights reserved.