我有几个使用Python 2.7用PyYAML构造的类。但是只有下面定义的类失败:
ConstructorError: could not determine a constructor for the tag '!ClassifyTransform' in "<unicode string>", line 1, column 5: --- !ClassifyTransform ^
YAML字符串如下:
self.yamlconfig = dedent(u'''\ --- !ClassifyTransform file_with_path: '/../../testdata/classify.csv' skip_header_lines: 1 duplicates: [] outtype: 'dataframe' client: 'test' classifycolumn: [ { newcolumn: 'audit_status', conditions: [['', 'Status', '==', {scalar: 'F', column: None}], ['&', 'STATUS', '==', {scalar: 'C', column: None}]], value: [['', {scalar: 'Filled', column: None}]] }, { newcolumn: 'audit_status', conditions: [['', 'Status', '%NA', {scalar: '', column: None}], ['&', 'STATUS', '==', {scalar: 'C', column: None}]], value: [['', {scalar: 'Filled - Order Missing', column: None}], ['+', {scalar: '', column: None}]] } ] ''')
与其他所有类一样,我对构造函数使用相同的模式:
def transform_constructor(loader, node): instance = ClassifyTransform.__new__(ClassifyTransform) yield instance state = loader.construct_mapping(node, deep=True) instance.__init__(**state) yaml.add_constructor(yaml_tag, transform_constructor)
我无法确定yamlconfig有什么问题。
我在实验中发现我已经使用了此导入
import ruamel.yaml as yaml
在我的课程中,并且在测试用例中导入了yaml,不足为奇,它不起作用。
我有几个使用Python 2.7用PyYAML构造的类。但是,只有以下定义的类失败,并带有:ConstructorError:无法确定标签'!ClassifyTransform'...]的构造函数。
pip3 instal PyYAML==3.13