我需要在Python中生成对PHP解析器有效的urlencoded字符串
我需要在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);
?>
输出的URL编码:
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)
输出的URL编码:
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中,我得不到PHP应用所需的有效URL编码。
2 个回答
1
现在似乎有一个可以在Python中处理这个问题的库了。
1
Python的urlencode函数不能处理嵌套的字典。你需要自己写一个方法,像这个问题里展示的那样: