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操作符,它使列表中的每个变量都成为函数的参数。