我如何针对文件中的一个占位符编写字典键和值

How can i write dictionary keys and values against one placeholder in a file

我正在尝试验证 json 文件,验证后我想将结果写入新文件。 为此,我在 python 中使用 json 模块。我有一个名为 schema 的字典对象,它包含所有键和值。如果我打印它,我会得到如下所示的结果

{'deviceId': 'String', 'userId': 'String', 'regTime': 'Number', 'timestamp': 'String', 'cardiac': 'Number', 'gyro': 'array', 'acc': 'array'}

我想根据占位符@schema_result 将整个模式结果写入文件。这样它看起来像下面

deviceId String

userId String

regTime Number

timestamp String

cardiac Number

gyro array

acc array

目前我正在这样写这个模式对象

def filing(schema, file_name): #a function that takes schema dictionary and name of file where to write
config = open(file_name, 'w')
for line in open('schema.json', 'r'):
    for key,value in schema.items():
        print(key+" "+value+"\n")
        line = line.replace('@schema_result', str(key+" "+value+"\n"))
    config.write(line)

这只会导致将第一个键和值替换为@schema_result。由于模式对象是字典,我无法添加下一个项目,因为在第一次迭代后它将用第一个键和值替换 @schema_result 并且下一次它找不到 @schema_result 因为它已经被替换.

当前结果如下

deviceId String #against @schema_placeholder in first iteration

如何在文件中针对一个占位符写入所有键和值

有两个文件

不是使用 for 循环从 schema 字典中读取每个项目,您可以使用列表理解和 join 将整个字典键值连接在一起,然后写入它到一个文件,

schema = {'deviceId': 'String', 'userId': 'String', 'regTime': 'Number', 'timestamp': 'String', 'cardiac': 'Number', 'gyro': 'array', 'acc': 'array'}


formatted_schema = ["{} {}\n".format(k,v) for k,v in schema.items()]
formatted_schema = ''.join(formatted_schema)

# output,

deviceId String
userId String
regTime Number
timestamp String
cardiac Number
gyro array
acc array

现在您只需将 formatted_schema 写入文件,将其替换为 @schema_result