我有这样一种输入:
sometable = {
["a"] = {
"a1",
},
["b"] = {
"b1",
["b2"] = true,
},
["c"] = {
"c1",
["c2"] = true,
},
},
我希望能将其转换为Python中可以使用的字典格式,或者说,我只是需要能够以这种模式读取数据:
print sometable[b][b2]
什么是最佳解决方案?我尝试使用一些替换和ast
转换它,也就是:
def make_dict(input): # just body, ie. without 'sometable'
input = input.replace("=", ":")
input = input.replace("[\"", "\"")
input = input.replace("\"]", "\"")
input = input.replace("\t", "")
input = input.replace("\n", "")
input = "{" + input + "}"
return ast.literal_eval(input)
问题在于输出结果为:
{
"a" :
{"a1", },
"b" :
{"b1", "b2" : true,},
"c" :
{"c1", "c2" : 1,},
}
错误(
无效语法
)在{"b1", "b2" : true,},
上。有什么建议吗?
"b1"
转换为"b1":None
或类似的内容 - 字典中不能有没有值的键。顺便说一下,{"a1", }
不是字典,而是set()
- 尝试print(type({"a1", }))
,你会得到<class 'set'>
。 - furas"b1"
转换为"b1":None
,已知上面提到的函数?我猜需要使用一些模式匹配来找到"something,"
,然后将其替换为"something:None,"
,但是我不确定如何做到这一点。 - emihir0