使用cgi.parse_qs()
后,如何将结果(字典)转换回查询字符串?寻找与urllib.urlencode()
类似的内容。
答案 0 :(得分:135)
urllib.parse.
urlencode
(查询,doseq = False,[...])将映射对象或一系列包含str或bytes对象的双元素元组转换为百分比编码的ASCII文本字符串。
dict
是一个映射。
urllib.urlencode
(query
[,doseq
])
将映射对象或一系列双元素元组转换为“百分比编码”字符串...由key=value
个字符分隔的一系列'&'
对...
答案 1 :(得分:46)
在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 :(得分:5)
您正在寻找完全之类的内容,例如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 :(得分:-1)
也许你正在寻找这样的东西:
def dictToQuery(d):
query = ''
for key in d.keys():
query += str(key) + '=' + str(d[key]) + "&"
return query
它需要一个字典并将其转换为查询字符串,就像urlencode一样。它会附加一个“&”查询字符串,但return query[:-1]
修复了,如果这是一个问题。