如何将字典转换为Python中的查询string?
使用cgi.parse_qs()
,如何将结果(字典)转换回查询string? 寻找类似于urllib.urlencode()
东西。
从文档 :
urllib.urlencode
(query
[,doseq
])
将映射对象或两元素元组的序列转换为 “百分比编码”string…用'&'
字符分隔的一系列key=value
对…
dict
是一个映射。
在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
你正在寻找类似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]
修复,如果这是一个问题。