我想在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()
是最简单的方法吗?