заменить строку в JSON String переменной - PullRequest
0 голосов
/ 08 марта 2019

Файл JSON загружен с:

with open("samples.json", "r") as read_file:
    data = json.load(read_file)

Теперь я заменяю ключ "22981" на "Автомат" в строке JSON:

d = json.loads(json.dumps(data).replace('"22981"','"Automat"'))

Это прекрасно работает.Но когда я пытаюсь сделать это с переменными, это не работает, например:

d = json.loads(json.dumps(data).replace('"{0}"'.format(key1), '"Automat"'))

Любая помощь?Спасибо!

Ответы [ 4 ]

0 голосов
/ 11 марта 2019

Я решил проблему с обходным путем. Я сделал замену до json.loads

import json
import csv

with open("sensors.json", "r") as read_file:
    sensors = json.load(read_file)
with open ("samples.json", "r") as myfile:
    data=myfile.read()

for key1 in sensors:
    data = data.replace(key1, sensors[key1]['name'])

data = json.loads(data)
0 голосов
/ 08 марта 2019

Я думаю, что приведенный ниже код поможет вам заменить клавишу «22981» на «Автомат»

import json
outfile = open('outfile.json', 'w')
with open("samples.json", "r") as read_file:
for data in  read_file: #To iterate on multiple records in the file(here data is one json record), 
    data = json.loads(data)
    data["Automat"] = data.pop('22981', '')
    outfile.write(json.dumps(data))
0 голосов
/ 08 марта 2019

Вы также можете сделать это с помощью Python

with open("samples.json", "r") as read_file:
    data = json.load(read_file)
    key="something"
    if data.get(key,None):
      val=data.pop(key)
      data['Automat']=val  
0 голосов
/ 08 марта 2019
d = json.loads(json.dumps(data).replace("{0}".format(key1), "Automat"))

У вас была одинарная кавычка вместе с двойной кавычкой.

Редактировать : Вы также должны знать о f-строках

d = json.loads(json.dumps(data).replace(f"{key1}", "Automat"))

см. PEP 498 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...