Пользовательский разбор bool в PYYAML

Мне нужно проанализировать логические значения в PYYAML нестандартным способом и преобразовать их в строки. Для этого я попытался написать «конструктор» и зарегистрировал его в yaml, но это ничего не дало. Логические значения анализировались как обычно. Это проблема с тегом или мне нужно решить эту проблему по-другому?

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)

Буду признателен за вашу помощь, спасибо.


person Samuel Yaron    schedule 09.03.2015    source источник


Ответы (1)


После некоторых проб и ошибок я нашел ответ сам. кажется, я использовал неправильный тег. Правильный код 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)
person Samuel Yaron    schedule 09.03.2015