Python 如何将嵌套字段添加到 Yaml 文件
Python How to add nested fields to Yaml file
我需要修改一个 YAML 文件并添加几个 fields.I 我正在使用 ruamel.yaml 包。
首先加载 YAML 文件:
data = yaml.load(file_name)
我可以轻松添加新的简单字段,例如-
data['prop1'] = "value1"
我面临的问题是我需要添加一个嵌套字典合并数组:
prop2:
prop3:
- prop4:
prop5: "Some title"
prop6: "Some more data"
我试图定义-
record_to_add = dict(prop2 = dict(prop3 = ['prop4']))
这是可行的,但是当我尝试在它下面添加 prop5 时失败了-
record_to_add = dict(prop2 = dict(prop3 = ['prop4'= dict(prop5 = "Value")]))
我明白了
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
我做错了什么?
问题与ruamel.yaml
关系不大。这个:
['prop4'= dict(prop5 = "Value")]
无效 Python 因为列表 ([ ]
) 需要逗号分隔值。你需要使用类似的东西:
record_to_add = dict(prop2 = dict(prop3 = dict(prop4= [dict(prop5 = "Some title"), dict(prop6='Some more data'),])))
由于您的程序不完整,我不确定您是否使用旧的 API。确保使用
import ruamel.yaml
yaml = ruamel.yaml.YAML()
和不是
import ruamel.yaml as yaml
这是因为有 ['prop4'= <> ]。相反 record_to_add = dict(prop2 = dict(prop3 = [dict(prop4 = dict(prop5 = "Value"))]))
应该有效。
另一种选择是,
import yaml
data = {
"prop1": {
"prop3":
[{ "prop4":
{
"prop5": "some title",
"prop6": "some more data"
}
}]
}
}
with open(filename, 'w') as outfile:
yaml.dump(data, outfile, default_flow_style=False)
我需要修改一个 YAML 文件并添加几个 fields.I 我正在使用 ruamel.yaml 包。
首先加载 YAML 文件:
data = yaml.load(file_name)
我可以轻松添加新的简单字段,例如-
data['prop1'] = "value1"
我面临的问题是我需要添加一个嵌套字典合并数组:
prop2:
prop3:
- prop4:
prop5: "Some title"
prop6: "Some more data"
我试图定义-
record_to_add = dict(prop2 = dict(prop3 = ['prop4']))
这是可行的,但是当我尝试在它下面添加 prop5 时失败了-
record_to_add = dict(prop2 = dict(prop3 = ['prop4'= dict(prop5 = "Value")]))
我明白了
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
我做错了什么?
问题与ruamel.yaml
关系不大。这个:
['prop4'= dict(prop5 = "Value")]
无效 Python 因为列表 ([ ]
) 需要逗号分隔值。你需要使用类似的东西:
record_to_add = dict(prop2 = dict(prop3 = dict(prop4= [dict(prop5 = "Some title"), dict(prop6='Some more data'),])))
由于您的程序不完整,我不确定您是否使用旧的 API。确保使用
import ruamel.yaml
yaml = ruamel.yaml.YAML()
和不是
import ruamel.yaml as yaml
这是因为有 ['prop4'= <> ]。相反 record_to_add = dict(prop2 = dict(prop3 = [dict(prop4 = dict(prop5 = "Value"))]))
应该有效。
另一种选择是,
import yaml
data = {
"prop1": {
"prop3":
[{ "prop4":
{
"prop5": "some title",
"prop6": "some more data"
}
}]
}
}
with open(filename, 'w') as outfile:
yaml.dump(data, outfile, default_flow_style=False)