我需要在Python中生成对PHP解析器有效的urlencoded字符串

3 投票
2 回答
3726 浏览
提问于 2025-04-16 11:09

我需要在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中处理这个问题的库了。

https://github.com/uber/multidimensional_urlencode

1

Python的urlencode函数不能处理嵌套的字典。你需要自己写一个方法,像这个问题里展示的那样:

撰写回答