用数组构建php风格的url -用Python


build php-style URLs with arrays - with Python

PHP使用[]符号在URL中编码数组,例如

$f = array( 'a', 'b', 'c');
http_build_query( array('f'=> $f) );
http://server/q.php?f[]=aaaa&f[]=bbb&f[]=ccc
在Python中,我没有见过这样的符号。相反,我通常看到:
f = [ 'a', 'b', 'c']
http://server/q.py?f=aaaa&f=bbb&f=ccc

是否有一个现成的方法在PYTHON编码数组PHP咀嚼?

编辑

解决我看到的特定注释:以下行在PHP中不会以相同的方式解释。如果你不相信我,用phpinfo()运行它,@Daniel:

test.php?f=1&f=zzzzz&f=b
test.php?f[]=1&f[]=zzzzz&f[]=b

对于那个通过循环将"f"重命名为"f[]"的家伙:谢谢你,但我要求的是一个内置解决方案或模块。

对我来说,重要的是不要重新发明轮子,特别是对于查询非常复杂的情况,混合数据类型,例如{'str': 'asd123#$', 'arr': ['val%', ')(*^&$@$', 'val3', 123.21], 'd': {'k1': 'v1', 'k2': 'v2'}。对于需要它们作为url的API,我碰巧使用了更大更复杂的情况。

编辑2

我想知道为什么这个问题被否决了:

这是一个关于通过URL桥接python代码和PHP网站的合理问题。

在我的例子中:HasOffers.com有API以PHP方式接受GET请求。

而且,如前所述,url编码往往变得复杂。

您可以尝试以下操作:

>>> a = 'a b c'.split()
>>> a
['a', 'b', 'c']
>>> def help_build_query(l):
...     return "http://server/q.py?{}=aaaa&{}=bbb&{}=ccc".format(*l)
...
>>> help_build_query(a)
'http://server/q.py?a=aaaa&b=bbb&c=ccc'
>>>

a是一个已拆分的列表。{}用作占位符。*被称为splat操作符,它使列表中的每个变量都成为函数的参数。