Urlecoding строки обратно из словаря

Я пытаюсь удалить некоторые элементы из строки запроса, лучший способ сделать это - проанализировать строку запроса, выполнить итерацию и удалить конкретный ключ, который мне не нужен, и соединить его все вместе.

Следуя руководству по питону, кажется, что функция urlencode, которую они говорят использовать, работает не так, как следовало ожидать.

Плата за следующий код, который просто анализирует строку запроса, а затем соединяет ее вместе. Я установил это, чтобы сохранить пустое значение.

>>> f = 'name=John%20Doe&seq=123412412412&wer'
>>> q = urlparse.parse_qs(f, keep_blank_values=True)
>>> q
{'wer': [''], 'name': ['John Doe'], 'seq': ['123412412412']}
>>> urllib.urlencode(q)
'wer=%5B%27%27%5D&name=%5B%27John+Doe%27%5D&seq=%5B%27123412412412%27%5D'

Я ожидаю, что результат кода запроса будет таким же, как строка f.

http://docs.python.org/2/library/urlparse.html

Use the urllib.urlencode() function to convert such dictionaries into query strings.

Поэтому я предполагаю, что мне нужно перебрать переменную q и построить строку вручную, вызывая urlencode для каждого элемента словаря? Нет ли лучшего способа...

Использование python 2.7

Спасибо

1 ответ

Решение

Вы должны использовать doseq аргумент для urlencode, так как в вашем запросе есть последовательности:

>>> urllib.urlencode(q, doseq=1)
'wer=&name=John+Doe&seq=123412412412'
Другие вопросы по тегам