擅长:python、mysql、java
<p>如果你想保留你原来的YAML布局和引用,那么你通常不需要花很多力气就可以用pyyaml做到这一点。在</p>
<p>使用<code>ruamel.yaml</code>(免责声明:我是该包的作者),这要简单得多,但是您仍然需要对顶层缩进执行两个空格的操作(使用<code>transform</code>参数):</p>
<pre><code>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)
</code></pre>
<p>给出:</p>
^{pr2}$
<p>原始文档中的任何注释都将保留在输出中,但是由于额外的缩进,EOL注释可能会发生偏移。在</p>