yaml - 将锚点和别名组合在一行中触发 parserError: 'Expected, 但发现 ''
问题描述
我正在尝试组合锚点和别名,以便以不同的名称将值重用到多个容器中。
我尝试了以下代码:
FWL_GV_NANSEN: &fwl_gv_nansen
dtype: float
value: 2715.0
FWL_GV_E3_2: &fwl_gv_e32 *fwl_gv_nansen
目标只是让另一个变量 FWL_GV_E3_2 包含与我稍后可以参考的 FWL_GV_NANSEN 相同的信息。
与在 Python(或其他)中定义相同:
a = 5.0
b = a
c = b
但这会触发以下错误消息:
yaml.parser.ParserError:解析“fwl_2.yml”中的块映射时,第 7 行,第 3 列预期 <块结束>,但发现'<别名>'
有没有办法将别名的内容分配给用于定义新锚的变量(通过不同的变量传播初始值?
PS:也许 YAML 不是最好的语言,因为例如使用 python 的变量会很简单,但我必须使用 YAML
解决方案
YAML 节点属性(即标签和锚点)只能出现在“真实”节点上:集合(块或流)或标量。
您可以从c-ns-properties
只能在那里使用的生产规则中看到,但别名部分也明确指出:
请注意,别名节点不得指定任何属性 [...]
如果您的YAML 解析器允许您访问原始锚点/别名,或一些锚点到节点/对象的映射(例如我ruamel.yaml
的 Python 包用于往返时),那么可以使用标记的标量:
FWL_GV_NANSEN: &fwl_gv_nansen
dtype: float
value: 2715.0
FWL_GV_E3_2: &fwl_gv_e32 !ref fwl_gv_nansen
使用对象的构造!ref
函数解析标量fwl_gv_nansen
,以及一些特定于应用程序的代码。通常,锚点和别名事件在作曲之前由作曲家加载步骤解决(如果这样,信息不再可用)。
推荐阅读
- ios - 如何在 iOS 14 中以编程方式获取视图的安全区域坐标?
- python - Python如何使用变量访问列表项
- javascript - node_modules/@angular/material/table/cell.d.ts 中的错误 -Typescript 版本问题 angular
- css - 将数据映射到 CSS 网格 - 如何在每个网格正方形中返回一个元素?
- angular - 如何测试 Angular Material 对话框是否打开
- html - Django 图像显示为错误如何修复?
- flutter - 如何保护部署到 Firebase Hosting 的 Flutter Web 的源代码?
- python - 输入所有必要的值后,python 拒绝执行 while 循环
- html - 如何缩小导航栏列表中对象之间的间隙?
- html - 如何创建一个只有图像而没有其他内容的网页