Yaml 在触发器parserError:';预期<;块端>;,但是发现'&书信电报;别名>';

Yaml 在触发器parserError:';预期<;块端>;,但是发现'&书信电报;别名>';,yaml,anchor,alias,Yaml,Anchor,Alias,我正在尝试组合锚和别名,以便在不同名称下将值重用到多个容器中 我尝试了以下代码: 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(或其他)中的定义相同: 但这会触发以下错误消息: yaml.parse

我正在尝试组合锚和别名,以便在不同名称下将值重用到多个容器中

我尝试了以下代码:

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(或其他)中的定义相同:

但这会触发以下错误消息:

yaml.parser.ParserError:解析块映射时 在“fwl_2.yml”中,第7行第3列 应为,但找到“

是否无法将别名内容分配给用于定义新锚定的变量(通过不同变量传播初始值)

PS:也许YAML并不是最好的语言,因为使用python的变量可能很简单,但我必须使用YAML,YAML节点属性(即标记和锚定)只能出现在“真实”节点上:集合(块或流)或标量

您可以从生产规则中看到,
c-ns-properties
只能在那里使用,但别名部分也可以使用:

请注意,别名节点不得指定任何属性[…]


如果YAML解析器允许您访问原始锚点/别名,或某些锚点到节点/对象的映射(如my
ruamel.YAML
package for 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
,以及一些特定于应用程序的代码。通常,锚和别名事件在编写之前由编写器加载程序步骤解析(如果这样,则信息不再可用)。

YAML节点属性(即标记和锚)只能发生在“真实”节点上:集合(块或流)或标量

您可以从生产规则中看到,
c-ns-properties
只能在那里使用,但别名部分也可以使用:

请注意,别名节点不得指定任何属性[…]


如果YAML解析器允许您访问原始锚点/别名,或某些锚点到节点/对象的映射(如my
ruamel.YAML
package for 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
,以及一些特定于应用程序的代码。通常,锚事件和别名事件在编写之前由编写器加载程序步骤解析(如果这样,则信息不再可用)。

您好,感谢您的回答:)因此基本上,我想用YAML做的事情是不可能的,因为你不能给alias这样的指针分配锚点,它们必须直接链接到“硬”内容?是的,它们必须链接到“硬”内容。您想要做的比转储对象发生在多个位置(递归或非递归)的数据结构所需的功能更强大。我用标签的潜在用途更新了答案,但这需要从应用程序级别连接到YAML加载程序,这并不简单。您好,感谢您的回答:)所以基本上,我不可能用YAML做我想做的事情,因为您无法将锚点分配给alias之类的指针,它们必须直接链接到“硬”内容?是的,它们必须链接到“硬”内容。您想要做的比转储对象发生在多个位置(递归或非递归)的数据结构所需的功能更强大。我用标签的潜在用途更新了答案,但这需要从应用程序级别挂钩到YAML加载程序,这不是小事。