这显然是一个 URL 的片段,因此解析它的最佳方法是使用 URL 解析工具。stdlib 附带urlparse
,它完全符合您的要求。
例如:
>>> import urlparse
>>> s = "/log?action=End&env=123&id=8000&cat=baseball"
>>> bits = urlparse.urlparse(s)
>>> variables = urlparse.parse_qs(bits.query)
>>> variables
{'action': ['End'], 'cat': ['baseball'], 'env': ['123'], 'id': ['8000']}
如果你真的想得到你要求的格式,你可以parse_qsl
改用,然后将键值对重新连接在一起。我不确定您为什么希望/log
将 包含在第一个查询变量中,或者第一个查询变量的值与其变量分开,但即使您坚持这样做也是可行的:
>>> variables = urlparse.parse_qsl(s)
>>> result = (variables[0][0] + '=', variables[0][1]) + tuple(
'='.join(kv) for kv in variables[1:])
>>> result
('/log?action=', 'End', 'env=123', 'id=8000', 'cat=baseball')
如果您使用的是 Python 3.x,只需将 更改urlparse
为urllib.parse
,其余部分完全相同。