在PYYAML中自定义bool解析

时间:2015-03-09 09:46:07

标签: python yaml pyyaml

我需要以自定义方式解析PYYAML中的布尔值并将它们转换为字符串。为此我试着写一个'构造函数'并用yaml注册它,但它没有做任何事情。 Booleans正常解析。这是标签的问题还是我必须以不同的方式处理这个问题?

def bool_constructor(loader, node):
value = loader.construct_yaml_bool(node)
if value == False:
    return '$false'
else:
    return '$true'

enter code here`yaml.add_constructor('!!bool', bool_constructor)

感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:3)

经过一番尝试和错误后,我自己找到了答案。看来,我使用了错误的标签。正确的python代码如下所示:

def bool_constructor(self, node):
value = self.construct_yaml_bool(node)
if value == False:
    return '$false'
else:
    return '$true'

yaml.Loader.add_constructor(u'tag:yaml.org,2002:bool', bool_constructor)
yaml.SafeLoader.add_constructor(u'tag:yaml.org,2002:bool', bool_constructor)