我有很多这种格式的数据集:
{{1,{{1,6,0-0:14.0.1.255,4,*},{1,6,0-0:14.0.2.255,4,*},{2,70,0-1:96.3.10.255,[1..2],0}}},{2,{{1,6,0-0:14.0.1.255,4,*},{1,6,0-0:14.0.2.255,4,*},{2,70,0-1:96.3.10.255,[1..2],0}}},{3,{{1,6,0-0:14.0.1.255,4,*},{1,6,0-0:14.0.2.255,4,*},{2,70,0-1:96.3.10.255,[1..2],0}}},{4,{{1,6,0-0:14.0.1.255,4,*},{1,6,0-0:14.0.2.255,4,*},{2,70,0-1:96.3.10.255,[1..2],0}}}}
我想将它转换成Python列表或任何其他更实用的数据类型以供以后使用,dict也可以。
我考虑过 ast.literal_eval() 但所有数据都必须在“”中。我已经为此绞尽脑汁了几个小时,但还没有找到一个足够强大的解决方案,可以将任何类型的数据放在这些括号之间并用逗号分隔。
您没有指定每个值应代表什么,所以我对每个项目使用数字
import json
data = '{{1,{{1,6,0-0:14.0.1.255,4,*},{1,6,0-0:14.0.2.255,4,*},{2,70,0-1:96.3.10.255,[1..2],0}}},{2,{{1,6,0-0:14.0.1.255,4,*},{1,6,0-0:14.0.2.255,4,*},{2,70,0-1:96.3.10.255,[1..2],0}}},{3,{{1,6,0-0:14.0.1.255,4,*},{1,6,0-0:14.0.2.255,4,*},{2,70,0-1:96.3.10.255,[1..2],0}}},{4,{{1,6,0-0:14.0.1.255,4,*},{1,6,0-0:14.0.2.255,4,*},{2,70,0-1:96.3.10.255,[1..2],0}}}}'
data_dict = {
key: {i: {j: item for j, item in enumerate(v.split(','))}
for i, v in enumerate(value[1:-1].replace('},{', '}|{').split('|'))}
for key, value in [d[1:-1].replace(',{{', '|{{').split('|')
for d in data[1:-1].replace('}},{', '}}|{').split('|')]}
print(json.dumps(data_dict, indent=4))
输出:
{
"1": {
"0": {
"0": "{1",
"1": "6",
"2": "0-0:14.0.1.255",
"3": "4",
"4": "*}"
},
"1": {
"0": "{1",
"1": "6",
"2": "0-0:14.0.2.255",
"3": "4",
"4": "*}"
},
"2": {
"0": "{2",
"1": "70",
"2": "0-1:96.3.10.255",
"3": "[1..2]",
"4": "0}"
}
},
"2": {
"0": {
"0": "{1",
"1": "6",
"2": "0-0:14.0.1.255",
"3": "4",
"4": "*}"
},
"1": {
"0": "{1",
"1": "6",
"2": "0-0:14.0.2.255",
"3": "4",
"4": "*}"
},
"2": {
"0": "{2",
"1": "70",
"2": "0-1:96.3.10.255",
"3": "[1..2]",
"4": "0}"
}
},
"3": {
"0": {
"0": "{1",
"1": "6",
"2": "0-0:14.0.1.255",
"3": "4",
"4": "*}"
},
"1": {
"0": "{1",
"1": "6",
"2": "0-0:14.0.2.255",
"3": "4",
"4": "*}"
},
"2": {
"0": "{2",
"1": "70",
"2": "0-1:96.3.10.255",
"3": "[1..2]",
"4": "0}"
}
},
"4": {
"0": {
"0": "{1",
"1": "6",
"2": "0-0:14.0.1.255",
"3": "4",
"4": "*}"
},
"1": {
"0": "{1",
"1": "6",
"2": "0-0:14.0.2.255",
"3": "4",
"4": "*}"
},
"2": {
"0": "{2",
"1": "70",
"2": "0-1:96.3.10.255",
"3": "[1..2]",
"4": "0}"
}
}
}