Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash或Python中读取模板JSON文件并创建带有替换的新文件_Python_Json - Fatal编程技术网

在bash或Python中读取模板JSON文件并创建带有替换的新文件

在bash或Python中读取模板JSON文件并创建带有替换的新文件,python,json,Python,Json,我想为不同的环境提供一个稍微不同的JSON文件 如果我创建了一个模板文件,其中包含一些变量,这些变量将根据环境变量进行替换,那么实现这一点的最简单方法是什么 我搜索了一个用于模板化的python库,这不可避免地会产生HTML模板。他们中有人会使用json文件吗 我可以使用json.load,然后使用json.dumps进行编写,但是如何进行替换呢 此任务也可以在bash中实现,而不是在python中实现 该文件包含招摇过市的文档。您只需要占位符,然后打开该文件,调用。替换几次(或使用函数re.s

我想为不同的环境提供一个稍微不同的JSON文件

如果我创建了一个模板文件,其中包含一些变量,这些变量将根据环境变量进行替换,那么实现这一点的最简单方法是什么

我搜索了一个用于模板化的python库,这不可避免地会产生HTML模板。他们中有人会使用json文件吗

我可以使用
json.load
,然后使用
json.dumps
进行编写,但是如何进行替换呢

此任务也可以在bash中实现,而不是在python中实现


该文件包含招摇过市的文档。

您只需要占位符,然后打开该文件,调用
。替换几次(或使用函数
re.sub
),然后对生成的字符串使用
json.loads

test.json

{"param":  "<param placeholder>"}
{
  "param1":  "<param1 placeholder>",
  "param2":  "<param2 placeholder>",
  "param3":  "<param3 placeholder>"
}
re.sub
与函数和命令一起使用:

test.json

{"param":  "<param placeholder>"}
{
  "param1":  "<param1 placeholder>",
  "param2":  "<param2 placeholder>",
  "param3":  "<param3 placeholder>"
}
import json
import re

with open('test.json') as f:
    template_json = f.read()

values = {
    'param1': 'param1 value',
    'param2': 'param2 value',
    'param3': 'param3 value'
}

after_replace = re.sub('<(.+?) placeholder>', lambda match: values.get(match.group(1)), template_json)
print(json.loads(after_replace))
{'param1': 'param1 value', 'param2': 'param2 value', 'param3': 'param3 value'}