#/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赵衍璋
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...