如何在python中将新字段添加到YAML文件中?

2024-09-24 02:19:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下内容的YAML文件:

---
  'Croatia':
    population: 4600000
    capital: Zagreb
  'Italy':
    population: 60000000
    capital: Rome

如何添加新字段:

^{pr2}$

我如何给每个州加上“大陆”这个有价值的欧洲?在


Tags: 文件yamlpopulation价值大陆capitalromecroatia
2条回答

如果你想保留你原来的YAML布局和引用,那么你通常不需要花很多力气就可以用pyyaml做到这一点。在

使用ruamel.yaml(免责声明:我是该包的作者),这要简单得多,但是您仍然需要对顶层缩进执行两个空格的操作(使用transform参数):

import sys
import ruamel.yaml

yaml_str = """\
 -
  'Croatia':
    population: 4600000
    capital: Zagreb
"""

def indent_data(s):
    return s.replace('\n', '\n  ')

yaml = ruamel.yaml.YAML()
# yaml.indent(mapping=4, sequence=4, offset=2)
yaml.preserve_quotes = True
yaml.explicit_start = True
data = yaml.load(yaml_str)
data['Croatia']['continent'] = 'Europe'
yaml.dump(data, sys.stdout, transform=indent_data)

给出:

^{pr2}$

原始文档中的任何注释都将保留在输出中,但是由于额外的缩进,EOL注释可能会发生偏移。在

加载它,像往常一样更新字典中的字段并再次转储。在

data = yaml.load(...)
data['Croatia']['continent'] = 'Europe'
yaml.dump(data, ...)

相关问题 更多 >