После использования cgi.parse_qs(), как преобразовать результат (словарь) обратно в строку запроса? Поиск чего-то похожего на urllib.urlencode().
Как преобразовать словарь в строку запроса в Python?
Ответ 1
Python 3
urllib.parse.urlencode(query, дозыq = False, [...])Преобразуйте объект сопоставления или последовательность двухэлементных кортежей, которые могут содержать объекты str или bytes, в текстовую строку ASCII с кодировкой в процентах.
dict - это отображение.
Наследие Питона
urllib.urlencode(query[,doseq])
Преобразовать объект сопоставления или последовательность двухэлементных кортежей в строку, закодированную в процентах... серию парkey=valueразделенных символами'&'...
Ответ 2
В 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
Ответ 3
Вы ищете нечто вроде 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)
Ответ 4
Возможно, вы ищете что-то вроде этого:
def dictToQuery(d):
query = ''
for key in d.keys():
query += str(key) + '=' + str(d[key]) + "&"
return query
Он принимает словарь и преобразовывает его в строку запроса, как и urlencode. Он добавит окончательный "&" к строке запроса, но return query[:-1] исправляет это, если это проблема.