我使用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,这并不奇怪。
答案 0 :(得分:0)
pip3 instal PyYAML==3.13
需要最新版本的PyYAML。新版本支持它并稳定
对于python 2.7,也需要类似的最新升级版本。