Преобразуйте диктон python в строку, совместимую с Content-Type: "application / x-www-form-urlencoded" - PullRequest
3 голосов
/ 15 декабря 2011

Я бы хотел взять объект dict dict и преобразовать его в эквивалентную строку, если он будет представлен в виде данных html-формы.

Диктовка выглядит так:

{
   'v_1_name':'v_1_value'
  ,'v_2_name':'v_2_value'
}

Я считаю, что строка формы должна выглядеть примерно так:

v_1_name=v_1_value&v_2_name=v_2_value

Какой хороший способ сделать это?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 15 декабря 2011

Попробуйте urllib.parse.urlencode :

>>> from urllib.parse import urlencode
>>> urlencode({'foo': 1, 'bar': 2})
'foo=1&bar=2'
1 голос
/ 31 марта 2018

Для Python 2.7 вы столкнетесь с этой ошибкой:

>>> from urllib.parse import urlencode
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named parse

Вместо этого используйте urllib.urlencode .

from urllib import urlencode
d = {'v_1_name': 'v_1_value', 'v_2_name': 'v_2_value'}
print urlencode(d)

выход

'v_2_name=v_2_value&v_1_name=v_1_value'
1 голос
/ 15 декабря 2011

Просто переберите элементы, соедините ключ и значение и создайте пару ключ / значение, разделенную символом «=», и, наконец, объедините пары символом «&»

Для Ex ...

If d={'v_1_name':'v_1_value','v_2_name':'v_2_value','v_3_name':'v_3_value'}

Тогда

'&'.join('='.join([k,v]) for k,v in d.iteritems())

есть

'v_2_name=v_2_value&v_1_name=v_1_value&v_3_name=v_3_value'
...