Мне нужно сгенерировать строку urlencoded в Python, которая подходит для парсера PHP - PullRequest
1 голос
/ 03 февраля 2011

Мне нужно генерировать тот же вывод в Python, что и в PHP, возможно?

Php код:

<?php 

$items = array(
   array(
   'item_key_a' => 'item_value_a')
);

$payload = array(
   'i_key' => 'i_value',
   'items' => $items,
);

echo http_build_query($payload);
 ?>

Выходные данные urlencoded:

i_key=i_value&items%5B0%5D%5Bitem_key_a%5D=item_value_a

Выходной кодированный URL:

i_key=i_value&items[0][item_key_a]=item_value_a

Код Python:

item = {}
item['item_key_a'] = 'item_value_a'

data = {}
data['i_key'] = 'i_value'
data['items'] = [item]

import urllib
print urllib.urlencode(data)

Выходной кодированный код:

items=%5B%7B%27item_key_a%27%3A+%27item_value_a%27%7D%5D&i_key=i_value

Выходной кодированный URL:

items=[{'item_key_a':+'item_value_a'}]&i_key=i_value

Так что в Python я не получаю правильное urlencoding, которое мне нужно для приложения PHP.

Ответы [ 2 ]

1 голос
/ 22 ноября 2014

Кажется, теперь есть библиотека для обработки этого в Python

https://github.com/uber/multidimensional_urlencode

1 голос
/ 03 февраля 2011

Python urlencode не обрабатывает вложенный dict.Вам нужно написать это самостоятельно так, как представлено для этого вопроса:

...