I am able to parse url using urlsplit
and get parameters using query
argument.
url
is '/api/v1/test?par1=val1&par2=val2a%3D1%26val2b%3Dfoo%26val2c%3Dbar'
After using urlsplit and query I get
'par1=val1&par2=val2a%3D1%26val2b%3Dfoo%26val2c%3Dbar'
And after running parse_qs on above I get
{'par2': ['val2a=1&val2b=foo&val2c=bar'], 'par1': ['val1']}
Here is output which is exactly what I need
'par1': ['val1']
I get return as list for one of parameter which has decoded data as below
'par2': ['val2a=1&val2b=foo&val2c=bar]
I can split par2
using split
method at &
and =
and get val2a
...
But is there any better way for this?
You can again use parse_qs
on the value of par2
>>> 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']}
After the last result you can get the value of val2a
etc.