如何在pyyaml中更改映射类型?

时间:2018-01-09 07:21:19

标签: python pyyaml

我想在Python脚本中加载一些YAML数据,但我不想使用常规dict进行映射,而是想使用我的自定义类(它保持插入顺序并且还合并键/子键而不是覆盖他们)。我不想改变任何其他YAML类型,只有映射。浏览网络,pyyaml文档,所以我没有看到任何明确的通用解决方案 - 几乎在所有情况下都使用了pyyaml的未记录功能(例如大多数解决方案here)。最初我考虑继承yaml.Loader并重新实现construct_mapping(),但似乎它还需要使用一些pyyaml内部......但也许它会"只是工作"这样做的时候:

# in my custom loader
def construct_mapping(self, node, deep=False):
  mapping = yaml.Loader.construct_mapping(self, node, deep)
  # do my own stuff with mapping, changing it to my own type
  return mapping

也许我应该添加自定义构造函数并使用!!map作为匹配的YAML标记?即使典型的映射在YAML文件中没有明确的标记,这会以这种方式工作吗?

我在这里错过了一些明显的解决方案,或者重新实现construct_mapping()是最简单的方法吗?

0 个答案:

没有答案