首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YAML:键的锚点?

问YAML:键的锚点?
EN

Stack Overflow用户
提问于 2018-08-14 11:23:21
回答 1查看 2K关注 0票数 0

我可以在不重新键入的情况下重用YAML中的键吗?如果可以通过锚点重复该键,则重命名该键将非常简单。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2018-08-14 14:25:22

当然,可以使用锚点和别名来减少输入:

代码语言:javascript
复制
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()))

这就给出了:

代码语言:javascript
复制
['lowCost', 'mediumCost', 'highCost']

以上是YAML的一个特性,而不是ruamel.yaml (我是它的作者)的一个特性。

请注意别名(*X)和映射值指示符(:)之间的空格。并非所有的YAML解析器(包括ruamel.yaml在指定‘YAML (typ=’colons can be part of an anchor name‘)’时使用的C实现的libyaml )都能正确解析YAML锚点和别名,所以这里需要空格(或换行符)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51833271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档