问题:如何在Python中将字典转换为查询字符串?
使用后cgi.parse_qs()
,如何将结果(字典)转换回查询字符串?寻找类似的东西 urllib.urlencode()
。
回答 0
Python 3
urllib.parse.
urlencode
(查询,doseq = False,[…])将映射对象或可能包含str或bytes对象的两个元素的元组序列转换为百分比编码的ASCII文本字符串。
A dict
是一个映射。
旧版Python
urllib.urlencode
(query
[,doseq
])
将映射对象或由两个元素组成的元组序列转换为 “百分比编码”字符串…一系列key=value
由'&'
字符分隔的对…
回答 1
在python3中,略有不同:
from urllib.parse import urlencode
urlencode({'pram1': 'foo', 'param2': 'bar'})
输出: 'pram1=foo¶m2=bar'
为了实现python2和python3的兼容性,请尝试以下操作:
try:
#python2
from urllib import urlencode
except ImportError:
#python3
from urllib.parse import urlencode
回答 2
您正在寻找完全一样的东西urllib.urlencode()
!
但是,当您调用parse_qs()
(与区别parse_qsl()
)时,字典键是唯一的查询变量名称,而值是每个名称的值列表。
为了将此信息传递到中urllib.urlencode()
,您必须“展平”这些列表。这是使用元组列表理解的方法:
query_pairs = [(k,v) for k,vlist in d.iteritems() for v in vlist]
urllib.urlencode(query_pairs)
回答 3
也许您正在寻找这样的东西:
def dictToQuery(d):
query = ''
for key in d.keys():
query += str(key) + '=' + str(d[key]) + "&"
return query
它需要一个字典并将其转换为查询字符串,就像urlencode一样。它将在查询字符串后附加一个最终的“&”,但return query[:-1]
如果有问题,则将其修复。