Строковое кодирование с помощью urllib.urlencode

Для тела почтового запроса я пытаюсь включить:

    data = [
        ('p1', 'true'),
        ('table', 'f3'),
        ('ids', '/'R000000020/'')
    ]

в

p1=true&table=f3&ids='R000000020'

с помощью

import urllib
payload = urllib.urlencode(data)

но я получаю

'p1=true&table=f3&ids=%27R000000020%27'

Как я могу заставить это работать правильно?

редактировать: я в конечном итоге с помощью:

    data = [
        ('p1', 'true'),
        ('table', 'f3'),
        ('ids', "'"+'R000000020'+"'")
    ]

2 ответа

Urlencode будет кодировать ' в %27, Если вы не хотите этого, вы можете присоединиться к data вручную:

payload = '&'.join(['='.join(d) for d in data])

Или вы можете заменить %27 с ':

payload = urllib.urlencode(data).replace("%27", "'")

Я знаю, это звучит глупо, но ты изменил свои данные ids чтобы:

('ids', 'R000000020')
Другие вопросы по тегам