感叹号是YAML标签的前缀。解析器必须通过标签名称为其实现构造函数。有一些默认标签,例如
!!bool,
!!int等等,甚至还有一些特定于Python的标签,例如
!!python/tuple。
您可以定义自己的构造函数,甚至可以为前缀捕获的多个标签定义构造函数。通过将定义为前缀
'',您可以捕获所有标签并忽略它们。您可以从构造函数中返回标记及其值,以将其全部视为文本。
>>> import yaml>>> def default_ctor(loader, tag_suffix, node):... print loader... print tag_suffix... print node... return tag_suffix + ' ' + node.value...>>> yaml.add_multi_constructor('', default_ctor)>>> yaml.load(y)<yaml.loader.Loader object at 0xb76ce8ec>!$uzyScalarNode(tag=u'!$uzy', value=u''){'world': {'people': {'name': '!$uzy', 'address': 'chez-bob'}}}>>>


