我有一个JSON字符串。我想提取我的正则表达式的匹配值。
{
"EX1": {
"Test1": {
"Fruit": "Apple"
},
"Test2": {
"vegetable": "Tomato"
},
"Test3": {
"SoftDrink": "Pepsi"
}
},
"EX2": {
"Test1": {
"Fruit": "Apple"
},
"Test2": {
"vegetable": "Tomato"
},
"Test3": {
"SoftDrink": "Pepsi"
}
}
}
我想传递一个正则表达式,例如“ * Test3.SoftDrink”,它必须搜索两个JSON对象,并且必须以百事可乐形式EX1和EX2返回值。
预期产量:
百事可乐
问题来源:stackoverflow
from json import loads
json = """{ "EX1": { "Test1": { "Fruit": "Apple" }, "Test2": { "vegetable": "Tomato" }, "Test3": { "SoftDrink": "Pepsi" } }, "EX2": { "Test1": { "Fruit": "Apple" }, "Test2": { "vegetable": "Tomato" }, "Test3": { "SoftDrink": "Pepsi" } } }"""
d = loads(json)
for key in d: print(d[key]['Test3']['SoftDrink'])
除了使用正则表达式,您还可以使用json.loads将JSON反序列化为
dict`,然后直接访问成员:
from json import loads
json = """{
"EX1": {
"Test1": {
"Fruit": "Apple"
},
"Test2": {
"vegetable": "Tomato"
},
"Test3": {
"SoftDrink": "Pepsi"
}
},
"EX2": {
"Test1": {
"Fruit": "Apple"
},
"Test2": {
"vegetable": "Tomato"
},
"Test3": {
"SoftDrink": "Pepsi"
}
}
}"""
d = loads(json)
for key in d:
print(d[key]['Test3']['SoftDrink'])
输出:
Pepsi
Pepsi
您也可以不循环而直接打印它们:
print(d['EX1']['Test3']['SoftDrink'])
# Pepsi
print(d['EX2']['Test3']['SoftDrink'])
# Pepsi
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。