我找到了如何在字典中将定界字符串拆分为键值对 elsewhere ,但我有一个传入的字符串,其中还包含两个相当于字典本身的参数:其中包含一个或三个键:值对的参数:
clientid=b59694bf-c7c1-4a3a-8cd5-6dad69f4abb0&keyid=987654321&userdata=ip:192.168.10.10,deviceid:1234,optdata:75BCD15&md=AMT-Cam:avatar&playbackmode=st&ver=6&sessionid=&mk=PC&junketid=1342177342&version=6.7.8.9012
显然,这些是用来混淆专有代码的虚拟参数。我想将所有这些转储到字典中,userdata
和 md
键的值本身就是字典:
requestdict {'clientid' : 'b59694bf-c7c1-4a3a-8cd5-6dad69f4abb0', 'keyid' : '987654321', 'userdata' : {'ip' : '192.168.10.10', 'deviceid' : '1234', 'optdata' : '75BCD15'}, 'md' : {'Cam' : 'avatar'}, 'playbackmode' : 'st', 'ver' : '6', 'sessionid' : '', 'mk' : 'PC', 'junketid' : '1342177342', 'version' : '6.7.8.9012'}
我可以使用我找到的巧妙的两级定界解析命令吗:
requestDict = dict(line.split('=') for line in clientRequest.split('&'))
并向其添加第三层来处理和保存第二层词典?语法是什么?如果没有,我想我将不得不按 &
进行拆分,然后检查并处理包含 :
的拆分,但即使那样我也无法弄清楚语法。有人可以帮忙吗?谢谢!
最佳答案
我基本上拿了Kyle's answer并使其对 future 更加友好:
def dictelem(input):
parts = input.split('&')
listing = [part.split('=') for part in parts]
result = {}
for entry in listing:
head, tail = entry[0], ''.join(entry[1:])
if ':' in tail:
entries = tail.split(',')
result.update({ head : dict(e.split(':') for e in entries) })
else:
result.update({head: tail})
return result
关于python - 将三级定界的字符串解析成字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13753279/