python中从urlparse返回的拆分列表

2024-03-28 15:01:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我能够使用urlsplit解析url,并使用query参数获取参数。你知道吗

url'/api/v1/test?par1=val1&par2=val2a%3D1%26val2b%3Dfoo%26val2c%3Dbar'

在使用urlspilt和query之后

'par1=val1&par2=val2a%3D1%26val2b%3Dfoo%26val2c%3Dbar'

在上面运行parse-qs之后

{'par2': ['val2a=1&val2b=foo&val2c=bar'], 'par1': ['val1']}

这就是我需要的输出

'par1': ['val1']

我得到一个参数的返回列表,该参数已解码数据如下

'par2': ['val2a=1&val2b=foo&val2c=bar]

我可以在&=使用split方法拆分par2,得到val2a。。。你知道吗

但是有没有更好的办法呢?你知道吗


Tags: testapiurl参数foobarqueryv1
2条回答

您可以再次对par2的值使用parse_qs

>>> url = '/api/v1/test?par1=val1&par2=val2a%3D1%26val2b%3Dfoo%26val2c%3Dbar'
>>> q = parse_qs(urlparse(url).query)
>>> q
{'par2': ['val2a=1&val2b=foo&val2c=bar'], 'par1': ['val1']}
>>> parse_qs(q['par2'][0])
{'val2b': ['foo'], 'val2c': ['bar'], 'val2a': ['1']}

在最后一个结果之后,您可以得到val2a等的值

split&partition=可能是最简单和最有效的方法。你知道吗

result = {k: v for k, _, v in (pair.partition('=') for pair in values.split('&'))}
# or
result = dict(pair.split('=') for pair in values.split('&'))

使用re.sub()是另一种选择,但我相信这只是过于复杂的东西。你知道吗

相关问题 更多 >