Python 字典转 URL 参数
我想把一个Python字典转换成字符串,以便用作网址参数。我相信有更好、更符合Python风格的方法来做到这一点。那是什么呢?
x = ""
for key, val in {'a':'A', 'b':'B'}.items():
x += "%s=%s&" %(key,val)
x = x[:-1]
5 个回答
41
对于Python 3,urllib
库有了一些变化,现在你需要这样做:
from urllib.parse import urlencode
params = {'a':'A', 'b':'B'}
urlencode(params)
319
使用 urllib.parse.urlencode()
。这个函数可以把一个包含键值对的字典转换成适合放在网址里的格式,比如 key1=val1&key2=val2
。
对于你的例子:
>>> import urllib.parse
>>> params = {'a':'A', 'b':'B'}
>>> urllib.parse.urlencode(params)
'a=A&b=B'
如果你想要生成一个包含重复参数的URL,比如: p=1&p=2&p=3
,你有两个选择:
>>> a = (('p',1),('p',2), ('p', 3))
>>> urllib.parse.urlencode(a)
'p=1&p=2&p=3'
或者:
>>> urllib.parse.urlencode({'p': [1, 2, 3]}, doseq=True)
'p=1&p=2&p=3'
如果你还在使用Python 2,可以使用 urllib.urlencode()
。
21
这是在Python 3中正确使用它的方法。
from urllib.parse import urlencode
params = {'a':'A', 'b':'B'}
print(urlencode(params))