Это подход без использования модуля json.Загрузите ваши данные в переменную.Затем итерируйте по ключам / значениям машин.Если вы нашли ключ, который является значением, которое вы ищете, установите его в новое значение.
Также обратите внимание: вам нужно закрыть блок массива, в противном случае указанный выше json недопустим.Обычно я использую онлайн-анализатор json для проверки правильности моих данных и т. Д. (Может пригодиться в будущем).
data = {
"name":"John",
"age":30,
"cars":
[
{
"car_model": "Mustang",
"car_brand": "Ford"
},
{
"car_model": "cx-5",
"car_brand": "Mazda"
}
]
}
for cars in data['cars']:
for key, value in cars.items():
if key == "car_model" and value == "cx-5":
cars[key] = "cx-9"
print(data)
Если вы хотите загрузить свой объект json из файла, давайте предположим, что он называется «data.json» и находится в том же каталоге, что и скрипт Python, который вы собираетесь запустить:
import json
with open('data.json') as json_data:
data = json.load(json_data)
for cars in data['cars']:
for key, value in cars.items():
if key == "car_model" and value == "cx-5":
cars[key] = "cx-9"
print(data)
Теперь, если вы хотите записать содержимое в исходный файл или новый файл, в этом случае я пишу в файл с именем "newdata.json":
import json
import re
with open('data.json') as json_data:
data = json.load(json_data)
print(data)
with open('external.txt') as f:
content = f.read()
print(content)
for cars in data['cars']:
for key, value in cars.items():
if key == "car_model" and value == "cx-5":
cars[key] = content
with open('newdata.json', 'w') as outfile:
json.dump(data, outfile)