我正在尝试使用urllib.urlencode对python中的字典进行urlencode.问题是,我必须编码一个数组.
结果必须是:
criterias%5B%5D=member&criterias%5B%5D=issue
#unquoted: criterias[]=member&criterias[]=issue
Run Code Online (Sandbox Code Playgroud)
但我得到的结果是:
criterias=%5B%27member%27%2C+%27issue%27%5D
#unquoted: criterias=['member',+'issue']
Run Code Online (Sandbox Code Playgroud)
我尝试过几件事,但似乎无法得到正确的结果.
import urllib
criterias = ['member', 'issue']
params = {
'criterias[]': criterias,
}
print urllib.urlencode(params)
Run Code Online (Sandbox Code Playgroud)
如果我cgi.parse_qs
用来解码一个正确的查询字符串,我得到这个结果:
{'criterias[]': ['member', 'issue']}
Run Code Online (Sandbox Code Playgroud)
但如果我对该结果进行编码,则会得到错误的结果.有没有办法产生预期的结果?
CST*_*bey 71
解决方案比上面列出的解决方案简单得多.
>>> import urllib
>>> params = {'criterias[]': ['member', 'issue']}
>>>
>>> print urllib.urlencode(params, True)
criterias%5B%5D=member&criterias%5B%5D=issue
Run Code Online (Sandbox Code Playgroud)
注意True.请参阅http://docs.python.org/library/urllib.html#urllib.urlencode doseq变量.
作为旁注,你不需要[]使它作为一个数组工作(这就是为什么urllib不包括它).这意味着您不需要将[]添加到所有数组键.
Luk*_*ský 12
您可以使用键值对(元组)列表:
>>> urllib.urlencode([('criterias[]', 'member'), ('criterias[]', 'issue')])
'criterias%5B%5D=member&criterias%5B%5D=issue'
Run Code Online (Sandbox Code Playgroud)