str.splitlines()
为您完成大部分工作:
>>> "2A:xxx\r\n3A:yyyy\r\n51:yzzzz\r\n52:yzyeys\r\n4A:.....".splitlines()
['2A:xxx', '3A:yyyy', '51:yzzzz', '52:yzyeys', '4A:.....']
这里的棘手之处在于跟踪3A
密钥。大概是A
定义层次结构的键中的。
最好将其拆分为生成器:
def hierarchy_key_values(lines):
parent = ''
for line in lines:
key, value = line.split(':', 1)
if key[-1] == 'A':
parent = key + '-'
else:
key = parent + key
yield key, value
剩下的很简单:
your_dict = dict(hierarchy_key_values(input_text.splitlines()))
使用您的示例输入进行演示:
>>> dict(hierarchy_key_values(input_text.splitlines()))
{'3A-52': 'yzyeys', '3A': 'yyyy', '3A-51': 'yzzzz', '2A': 'xxx', '4A': '.....'}