用变量替换JSON字符串中的字符串

时间:2019-03-08 10:29:54

标签: python json string replace

JSON文件已加载:

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

现在,我将JSON-String中的键“ 22981”替换为“ Automat”:

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

这很好。但是,当我尝试使用变量执行此操作时,它将无法正常工作,例如:

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

有帮助吗?谢谢!

4 个答案:

答案 0 :(得分:0)

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

您有一个单引号和一个双引号。

编辑:您可能还应该了解f字符串

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

请参见PEP 498

答案 1 :(得分:0)

我认为以下代码可帮助您将“ 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))

答案 2 :(得分:0)

您也可以使用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  

答案 3 :(得分:0)

我通过解决方法解决了这个问题。我在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)