我基本上是在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'
}
我在做什么错/我该如何改善?
答案 0 :(得分:0)
我最终仅使用custom tags - StackOverflow Post并为该特定情况定义了自己的处理程序。我认为它的伸缩性不是很高(无法自我参考),但我们会看到
答案 1 :(得分:0)
问题是您的期望不正确。在the YAML specification中,它明确指出:
在表示图中,一个节点可能出现在多个集合中。序列化此类数据时,节点的首次出现是由锚点标识的。随后的每个事件都被序列化为一个别名节点,该节点返回该锚点
您的classroom_*year_*subject
是一个节点,该标量将作为字符串加载,它恰好有两个嵌入的星号,除了它们出现在标量的开头({ {3}})。
因此,该节点不是由标量(节点)组成,后跟您似乎想(希望)的两个别名。只有完整的节点才能被别名。