簡體   English   中英

PyYAML ConstructError:無法確定標記的構造函數

[英]PyYAML ConstructError: could not determine a constructor for the tag

我有幾個使用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,這並不奇怪。

pip3 instal PyYAML==3.13

所需的最新版本的PyYAML。 新版本支持它並穩定

對於python 2.7,也需要類似的最新升級版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM