我可以在不重新键入的情况下重用YAML中的键吗?如果可以通过锚点重复该键,则重命名该键将非常简单。
splitTestVariants:
lowCost: 0
mediumCost: 1
highCost: 2
pricePlans:
# reuse lowCost key instead this comment without retyping it
basic: 100
premium: 200
vip: 300
# reuse mediumCost key instead this comment without retyping it
basic: 200
premium: 300
vip: 400
# reuse highCost instead this comment without retyping it
basic: 300
premium: 400
vip: 500发布于 2018-08-14 14:25:22
当然,可以使用锚点和别名来减少输入:
import sys
import ruamel.yaml
yaml_str = """\
splitTestVariants:
&l lowCost: 0
&m mediumCost: 1
&h highCost: 2
pricePlans:
*l :
basic: 100
premium: 200
vip: 300
*m :
basic: 200
premium: 300
vip: 400
*h :
basic: 300
premium: 400
vip: 500
"""
yaml = ruamel.yaml.YAML()
yaml.default_flow_style = False
data = yaml.load(yaml_str)
print(list(data['pricePlans'].keys()))这就给出了:
['lowCost', 'mediumCost', 'highCost']以上是YAML的一个特性,而不是ruamel.yaml (我是它的作者)的一个特性。
请注意别名(*X)和映射值指示符(:)之间的空格。并非所有的YAML解析器(包括ruamel.yaml在指定‘YAML (typ=’colons can be part of an anchor name‘)’时使用的C实现的libyaml )都能正确解析YAML锚点和别名,所以这里需要空格(或换行符)。
https://stackoverflow.com/questions/51833271
复制相似问题