正如标题中所提到的,我试图创建一个可以从终端运行的简单py脚本来执行以下操作:
那说,问题是当我尝试下面发布的递归搜索方法时,因为我对python很新,我会很感激这个问题的任何帮助,我想它是...要么是json我正在使用的文件或使用的搜索方法。
简化问题,我搜索的值永远不会与对象内的任何内容匹配,是一个键或纯粹的一些字符串值。尝试了多种方法来执行递归搜索,但无法获得匹配。
例如:考虑样本json,我想替换值" selectable_parts"或" static_parts"甚至更深层次的结构" 1h_mod310_door_00"但似乎我的搜索方法无法在" object [object] [children] [0] [children] [5] [name]" (希望这有帮助)。
示例JSON:(https://drive.google.com/open?id=0B2-Bn2b0ujjVdW5YVGg3REg3OWs)
await Navigation.PushAsync(new YourMasterPage());
var pages = Navigation.NavigationStack.ToList();
foreach (var page in pages)
{
if (page.GetType() != typeof(YourMasterPage))
Navigation.RemovePage(page);
}
答案 0 :(得分:0)
问题是我导航json obj的方式,因为该方法没有考虑是否是dict或列表(我相信......)。
所以回答我自己的问题是我用来检查值的递归搜索:
def get_recursively(search_dict, field):
"""
Takes a dict with nested lists and dicts,
and searches all dicts for a key of the field
provided.
"""
fields_found = []
for key, value in search_dict.iteritems():
if key == field:
print value
fields_found.append(value)
elif isinstance(value, dict):
results = get_recursively(value, field)
for result in results:
if SEARCH_KEY in result:
fields_found.append(result)
elif isinstance(value, list):
for item in value:
if isinstance(item, dict):
more_results = get_recursively(item, field)
for another_result in more_results:
if SEARCH_KEY in another_result:
fields_found.append(another_result)
return fields_found
# write_file(js_file, js_file_name)
希望这有助于某人。