Я пробую к 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']}
Но если я кодирую тот результат, я возвращаю неправильный результат. Существует ли способ привести к ожидаемому результату?
Вы можете использовать список пар "ключ-значение" (кортежи):
>>> urllib.urlencode([('criterias[]', 'member'), ('criterias[]', 'issue')])
'criterias%5B%5D=member&criterias%5B%5D=issue'
Listcomp значений:
>>> criterias = ['member', 'issue']
>>> urllib.urlencode([('criterias[]', i) for i in criterias])
'criterias%5B%5D=member&criterias%5B%5D=issue'
>>>