PyYAML ConstructError:无法确定标记的构造函数

问题描述 投票:1回答:1

我有几个使用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
所需的最新版本的PyYAML。新版本支持它并稳定
对于python 2.7也需要类似的最新升级版本。
python python-2.7 yaml pyyaml
1个回答
0
投票
对于python 2.7也需要类似的最新升级版本。
© www.soinside.com 2019 - 2024. All rights reserved.