是";关于;及;关「;在YAML 1.2中应该被解释为真还是假?
说 规范的: y | n Regexp: y | y |是|是|是| n | n |否|否|否 |真|真|真|假|假|假|开|开|关|关| 说 定义: 表示真/假值。在没有本机布尔值的语言中 类型(如C)通常绑定到本机整数类型,使用 为真,为假为零 标准形式:是";关于;及;关「;在YAML 1.2中应该被解释为真还是假?,yaml,Yaml,说 规范的: y | n Regexp: y | y |是|是|是| n | n |否|否|否 |真|真|真|假|假|假|开|开|关|关| 说 定义: 表示真/假值。在没有本机布尔值的语言中 类型(如C)通常绑定到本机整数类型,使用 为真,为假为零 标准形式: true或false 这是否意味着1.1中的所有替代形式都应该在1.2中解释为反序列化中的字符串(而不是布尔值)?在YAML 1.2规范中,它们不再被提及,但我想不起来它在任何地方都说明了它们被删除的原因以及它们被删除的原因。然而,在实际
true
或false
这是否意味着1.1中的所有替代形式都应该在1.2中解释为反序列化中的字符串(而不是布尔值)?在YAML 1.2规范中,它们不再被提及,但我想不起来它在任何地方都说明了它们被删除的原因以及它们被删除的原因。然而,在实际情况中,这些额外的“布尔”会引起混乱,这就是为什么它们可能会从规范中删除的原因
在ruamel.yaml中,我对PyYAML的升级(主要是yaml 1.1,支持Yes/No/On/Off)仅当yaml文件指定为yaml 1.1时,才将这些值表示为布尔值(使用加载参数,或起始行
%YAML 1.1
。然后这些标量被解释为字符串。我还没有听到任何人抱怨,所以我认为我做的是正确的(即,根据1.2规范,每个人都期望做的事;-)。你问了两个不同的问题,所以我将依次回答它们:
on
和off
应该解释为字符串(tag:yaml.org,2002:str
)true
和false
是隐式布尔值(tag:yaml.org,2002:bool
)
但是,规范建议YAML解析器默认使用JSON模式,而不是JSON模式。核心模式是“JSON模式的扩展,允许对相同类型进行更多的人类可读表示。”
使用核心模式时,标量true
、true
、true
、false
、false
和false
都是布尔值“我假设我做的是正确的[…]事情”--从一个用户那里,ruamel.yaml做了我期望的事情。非常感谢;谢谢。