【发布时间】:2017-01-24 20:05:23
【问题描述】:
递归引用在ruamel.yaml 或pyyaml 中效果很好:
$ ruamel.yaml.dump(ruamel.yaml.load('&A [ *A ]'))
'&id001
- *id001'
但是它(显然)不适用于普通引用:
$ ruamel.yaml.dump(ruamel.yaml.load("foo: &foo { a: 42 }\nbar: { <<: *foo }"))
bar: {a: 42}
foo: {a: 42}
我想显式创建一个引用:
data = {}
data['foo'] = {'foo': {'a': 42}}
data['bar'] = { '<<': data['foo'], 'b': 43 }
$ ruamel.yaml.dump(data, magic=True)
foo: &foo
a: 42
bar:
<<: *foo
b: 43
这对于生成具有大量公共键的大型数据结构的 YAML 输出非常有用
在输出上没有有争议的 re.replace 怎么可能?
其实ruamel.yaml.dump(data)的结果是
bar:
'<<': &id001
foo:
a: 42
b: 43
foo: *id001
所以我需要将'<<' 替换为<<,并可能将id001 替换为foo。
【问题讨论】:
标签: python yaml pyyaml ruamel.yaml