【发布时间】:2017-05-21 18:27:50
【问题描述】:
这个问题是What is the most efficient way to extract info from complex JSON files?的后续问题
我有大量的 dict 文件,其结构可以是任意的。当没有额外的嵌套时,我想捕获所有带有“text”键的字符串以及所有带有“htext”键的字符串。
d = {
"section": {
"heading":{"lvl":"A1", "text":"today"},
"htext":[
{"color":"green", "text":"yesterday", "htext":["a","b","c"]},
{"color":"purple", "text":"tomorrow"}
]
}
}
在上面的例子中,我希望我的结果是["today", "yesterday", "a", "b", "c", "tomorrow"]。
上一题提供的解决方案是:
def extract_text(obj, acc):
if isinstance(obj, dict):
for k, v in obj.items():
if isinstance(v, (dict, list)):
extract_text(v, acc)
elif k == "text":
acc.append(v)
elif isinstance(obj, list):
for item in obj:
extract_text(item, acc)
我尝试通过将k == 'htext' 添加到elif 语句来修改此功能,但没有成功。我对 Python 有新的认识。非常感谢任何帮助!
【问题讨论】:
标签: python json dictionary recursion