2013-02-24 2 views
0

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

Следуя руководству python, кажется, что функция 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#urlparse.parse_qs

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

Так что я полагаю, я должен цикл по переменному д и построить строку вручную, вызывая UrlEncode по каждому пункту словаря? Не есть ли лучший способ ...

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

Благодарности

ответ

1

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

>>> urllib.urlencode(q, doseq=1) 
'wer=&name=John+Doe&seq=123412412412'