urlencode массив значений

Я пробую к urlencode словарь в Python с urllib.urlencode. Проблема, я должен закодировать массив.

Результат должен быть:

criterias%5B%5D=member&criterias%5B%5D=issue
#unquoted: criterias[]=member&criterias[]=issue

Но результат, который я получаю:

criterias=%5B%27member%27%2C+%27issue%27%5D
#unquoted: criterias=['member',+'issue']

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

import urllib
criterias = ['member', 'issue']
params = {
    'criterias[]': criterias,
}
print urllib.urlencode(params)

Если я использую cgi.parse_qs для декодирования корректной строки запроса я получаю это как результат:

{'criterias[]': ['member', 'issue']}

Но если я кодирую тот результат, я возвращаю неправильный результат. Существует ли способ привести к ожидаемому результату?

42
задан Ikke 3 April 2010 в 11:41
поделиться

2 ответа

Вы можете использовать список пар "ключ-значение" (кортежи):

>>> urllib.urlencode([('criterias[]', 'member'), ('criterias[]', 'issue')])
'criterias%5B%5D=member&criterias%5B%5D=issue'
12
ответ дан 26 November 2019 в 23:39
поделиться

Listcomp значений:

>>> criterias = ['member', 'issue']
>>> urllib.urlencode([('criterias[]', i) for i in criterias])
'criterias%5B%5D=member&criterias%5B%5D=issue'
>>> 
2
ответ дан 26 November 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: