Если мы знаем, к какому ключу прикреплено значение ArmReoriented
, мы можем сделать это правильным способом, обрабатывая ваш контент структурированные данные , а не в виде строки:
import json, copy
def hideReorientedArm(obj):
if isinstance(obj, dict):
if obj.get("LastEvent") == "ArmReoriented" and obj.get("visible") is True:
obj["visible"] = False
return obj
def walk(obj, updateFn):
if isinstance(obj, list):
obj = [walk(elem, updateFn) for elem in obj]
elif isinstance(obj, dict):
obj = {k: walk(v, updateFn) for k, v in obj.items()}
return updateFn(obj)
with open(mycodepath, 'r') as file:
data = json.load(file)
data = walk(data, hideReorientedArm)
См. Это в https://ideone.com/Zr6546
Даже если вы не знаете имя специфика c ключ с этим значением, вы все равно можете искать их все, если это необходимо по какой-то причине, заменив приведенное выше более короткое определение hideReorientedArm
на что-то более похожее на следующее:
def hideReorientedArm(obj):
if isinstance(obj, dict):
if obj.get("visible") is True:
foundArmReoriented = False
for (k,v) in obj.items():
if v == "ArmReoriented":
foundArmReoriented = True
break
if foundArmReoriented:
obj["visible"] = False
return obj
... см. эту версию работающей в https://ideone.com/z34Mx1