【问题标题】:yaml anchor within a mapping?映射中的yaml锚?
【发布时间】:2018-07-06 17:13:01
【问题描述】:

我实际上是在尝试在我的 yaml 文件中实现以下目标

Classroom:
    year: &year 5
    subject: &subject Math
    classroom_name: classroom_*year_*subject

我的期望

'Classroom': {
    'year': 5
    'subject': 'Math'
    'classroom_name': 'classroom_5_Math'
}

当我加载它时(通过 Python,但我认为这不会改变任何东西?)。

我得到了什么

'Classroom': {
    'year': 5
    'subject': 'Math'
    'classroom_name': 'classroom_*year_*subject'
}

我做错了什么/我该如何改进?

【问题讨论】:

    标签: yaml config pyyaml


    【解决方案1】:

    我最终只使用了custom tags - StackOverflow Post 并为该特定情况定义了我自己的处理程序。我认为它的可扩展性不是很高(无法自我引用),但我们会看到

    【讨论】:

      【解决方案2】:

      问题在于您的期望不正确。在the YAML specification 中明确指出:

      在表示图中,一个节点可能出现在多个集合中。在序列化此类数据时,节点的第一次出现由锚点标识。每个后续事件都被序列化为一个别名节点,该节点引用该锚点

      你的classroom_*year_*subject 是一个节点,这个标量将作为一个字符串加载,它恰好有两个嵌入的星号,除了它们出现在标量的开头(refer to production rule [104] in the spec )。

      因此,该节点不是您似乎认为(希望)的标量(节点)后跟两个别名的组合。只有完整的节点才能被别名。

      【讨论】:

        猜你喜欢
        • 2021-01-21
        • 2019-07-08
        • 1970-01-01
        • 2015-12-27
        • 1970-01-01
        • 2015-11-07
        • 2017-02-16
        • 2021-10-22
        • 2021-04-29
        相关资源
        最近更新 更多