Как преобразовать словарь в строку запроса в Python?
после использования cgi.parse_qs(), Как преобразовать результат (словарь) обратно в строку запроса? Ищу что-то похожее на urllib.urlencode(). 
4 ответа:
С документы:
urllib.urlencode(query[,doseq])
Конвертировать объект сопоставления или последовательность двухэлементных кортежей в строку с" процентным кодированием"... серияkey=valueпар, разделенных'&'символы...A
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()), ключи словаря-это уникальные имена переменных запроса, а значения -списки значений для каждого имени.чтобы передать эту информацию в
urllib.urlencode(), вы должны "сгладить" эти списки. Вот как вы можете сделать это с помощью list comprehenshion кортежей: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Он берет словарь и преобразует его в строку запроса, так же, как urlencode. Он добавит окончательный " & " в строку запроса, но
return query[:-1]исправляет это, если это проблема.