#/usr/bin/env python
'''
笔试题目
现有 Json 数据,格式如下:
json = { "a": [ { "b": "c" } , ... ] , ... };
请实现一个方法:get(json, "a[0].b"),使其返回值为 c。
要求:自己实现遍历逻辑,不允许使用正则表达式、不允许使用 eval()等类似
方法。
测试用例:
json = { "a": [ { "b": "c" }, "d" ], "x": 1}
get(json, "a[0].b") == "c"
get(json, "a[1]")== "d"
get(json, "x") == 1
'''
def get(data,key):
name = key.replace('[', '.').replace(']', '').split(sep='.')
for i in range(len(name)):
if name[i].isnumeric():
name[i]=int(name[i])
def sub(subdata, name):
if len(name) == 1:
return subdata[name[0]]
if not isinstance(subdata[name[0]], dict):
if not isinstance(subdata[name[0]], list):
return subdata[name[0]]
else:
return sub(subdata[name[0]], name[1:])
else:
return sub(subdata[name[0]], name[1:])
return sub(data,name)
def test():
json = {"a": [{"b": "c"}, "d"], "x": 1}
print(get(json, "a[0].b"))
print(get(json, "a[1]"))
print(get(json, "x"))
if __name__=='__main__':
test()
Json 数据提取-20200819赵衍璋
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。