我正在尝试将 Python 字典转换为字符串以用作 URL 参数。我相信有一个更好的,更 蟒蛇的方式来做到这一点。这是什么?
x = "" for key, val in {'a':'A', 'b':'B'}.items(): x += "%s=%s&" %(key,val) x = x[:-1]
使用 urllib.parse.urlencode()。它获取一个键-值对的字典,并将其转换为适合 URL 的形式(例如,key1=val1&key2=val2)。
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,你有两个选择:
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'
如果您仍在使用 Python2,请使用 urllib.urlencode()。
urllib.urlencode()
使用第三方 Python URL 操作库 卷:
f = furl.furl('') f.args = {'a':'A', 'b':'B'} print(f.url) # prints ... '?a=A&b=B'
如果需要重复参数,可以执行以下操作:
f = furl.furl('') f.args = [('a', 'A'), ('b', 'B'),('b', 'B2')] print(f.url) # prints ... '?a=A&b=B&b=B2'
对我来说,这看起来有点像 Python,而且没有使用任何其他模块:
x = '&'.join(["{}={}".format(k, v) for k, v in {'a':'A', 'b':'B'}.items()])
对于 python3,urllib库有一点改变,现在您必须这样做:
urllib
from urllib.parse import urlencode params = {'a':'A', 'b':'B'} urlencode(params)
下面是在 Python3中使用它的正确方法。
from urllib.parse import urlencode params = {'a':'A', 'b':'B'} print(urlencode(params))