2015-03-09 4 views
0

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

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

После некоторой попытки и ошибки я сам нашел ответ. кажется, что я использовал неправильный тег. Правильный код 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) 
+0

Хороший вопрос-ответ, пожалуйста, отделите свой код. – Thomas8