如何将字典转换为Python中的查询string?

使用cgi.parse_qs() ,如何将结果(字典)转换回查询string? 寻找类似于urllib.urlencode()东西。

从文档 :

urllib.urlencodequery [, doseq ])
映射对象或两元素元组的序列转换 “百分比编码”string…用'&'字符分隔的一系列key=value对…

dict是一个映射。

在python3中,略有不同:

 from urllib.parse import urlencode urlencode({'pram1': 'foo', 'param2': 'bar'}) 

输出: 'pram1=foo&param2=bar'

对于python2和python3的兼容性,试试这个:

 try: #python2 from urllib import urlencode except ImportError: #python3 from urllib.parse import urlencode 

你正在寻找类似urllib.urlencode()东西!

但是,在调用parse_qs() (与parse_qsl() )时,字典键是唯一的查询variables名称,值是每个名称的值列表

为了将这个信息传递到urllib.urlencode() ,你必须“扁平”这些列表。 下面是你可以如何做一个元组的列表:

 query_pairs = [(k,v) for k,vlist in d.iteritems() for v in vlist] urllib.urlencode(query_pairs) 

也许你正在寻找这样的东西:

 def dictToQuery(d): query = '' for key in d.keys(): query += str(key) + '=' + str(d[key]) + "&" return query 

它需要一个字典,并将其转换为一个查询string,就像urlencode。 它会追加最后的“&”到查询string,但return query[:-1]修复,如果这是一个问题。