相关疑难解决方法(0)

如何解析/读取YAML文件到Python对象?

如何解析/读取YAML文件到Python对象?

例如,这个YAML:

Person:
  name: XYZ
Run Code Online (Sandbox Code Playgroud)

对于这个Python类:

class Person(yaml.YAMLObject):
  yaml_tag = 'Person'

  def __init__(self, name):
    self.name = name
Run Code Online (Sandbox Code Playgroud)

我顺便使用PyYAML.

python parsing yaml

96
推荐指数
2
解决办法
15万
查看次数

为什么PyYAML使用生成器来构造对象?

我一直在阅读PyYAML源代码,试图了解如何定义一个我可以添加的正确的构造函数add_constructor.我对该代码现在的工作方式有了很好的理解,但我仍然不明白为什么默认的YAML构造函数SafeConstructor是生成器.例如,该方法construct_yaml_mapSafeConstructor:

def construct_yaml_map(self, node):
    data = {}
    yield data
    value = self.construct_mapping(node)
    data.update(value)
Run Code Online (Sandbox Code Playgroud)

我理解如何使用生成器BaseConstructor.construct_object如下所示来存根一个对象,并且仅使用来自节点的数据填充它,如果deep=False传递给construct_mapping:

    if isinstance(data, types.GeneratorType):
        generator = data
        data = generator.next()
        if self.deep_construct:
            for dummy in generator:
                pass
        else:
            self.state_generators.append(generator)
Run Code Online (Sandbox Code Playgroud)

我理解BaseConstructor.construct_documentdeep=Falsefor 的情况下如何生成数据construct_mapping.

def construct_document(self, node):
    data = self.construct_object(node)
    while self.state_generators:
        state_generators = self.state_generators
        self.state_generators = []
        for generator in state_generators:
            for dummy in generator:
                pass
Run Code Online (Sandbox Code Playgroud)

我不明白的是通过遍历生成器来截断数据对象和解决对象的好处construct_document …

python yaml pyyaml ruamel.yaml

12
推荐指数
1
解决办法
502
查看次数

deep=True 在 pyyaml.Loader.construct_mapping 中做什么?

在网上搜索自定义构造函数的用法时,我看到如下内容:

def some_constructor(loader, node):
    value = loader.construct_mapping(node, deep=True)
    return SomeClass(value)
Run Code Online (Sandbox Code Playgroud)

其作用是什么deep=True我在pyyaml 文档中没有看到它。

看来我需要它;我有一个由 py​​yaml 表示器生成的 yaml 文件,它包括节点锚点和别名(如&id003*id003);如果没有,deep=True我会得到包含锚点/别名的那些对象的浅地图。

pyyaml python-2.7

6
推荐指数
1
解决办法
1711
查看次数

标签 统计

python ×2

pyyaml ×2

yaml ×2

parsing ×1

python-2.7 ×1

ruamel.yaml ×1