kopia lustrzana https://github.com/peterhinch/micropython-samples
29 wiersze
791 B
Python
29 wiersze
791 B
Python
![]() |
def unquote_plus(s):
|
||
|
# TODO: optimize
|
||
|
s = s.replace("+", " ")
|
||
|
arr = s.split("%")
|
||
|
arr2 = [chr(int(x[:2], 16)) + x[2:] for x in arr[1:]]
|
||
|
return arr[0] + "".join(arr2)
|
||
|
|
||
|
def parse_qs(s):
|
||
|
res = {}
|
||
|
if s:
|
||
|
pairs = s.split("&")
|
||
|
for p in pairs:
|
||
|
vals = [unquote_plus(x) for x in p.split("=", 1)]
|
||
|
if len(vals) == 1:
|
||
|
vals.append(True)
|
||
|
old = res.get(vals[0])
|
||
|
if old is not None:
|
||
|
if not isinstance(old, list):
|
||
|
old = [old]
|
||
|
res[vals[0]] = old
|
||
|
old.append(vals[1])
|
||
|
else:
|
||
|
res[vals[0]] = vals[1]
|
||
|
return res
|
||
|
|
||
|
#print(parse_qs("foo"))
|
||
|
#print(parse_qs("fo%41o+bar=+++1"))
|
||
|
#print(parse_qs("foo=1&foo=2"))
|