当从包含munch.Munch个字符的字典中写入yaml文件时,会将"!munch.munch"作为输出的一部分.我怎样才能避免这种行为?

Minimal example to show the problem

data = {"A":"a", "B":munch.Munch({"C":"c"})}
with open("test.yaml", "w") as file:
    yaml.dump(data, file)

生产:

A: a
B: !munch.Munch
  C: c

但想要的输出是:

A: a
B:
  C: c

Unfeasible solutions

当然,人们可以简单地递归浏览字典,并将每munch.Munch个字典转换成一个字典,但我相信有一个更好的解决方案.将munch.Munch直接写入yaml文件的工作原理与预期一致,munch.Munch和dict之间的差异非常小——一定有更好的方法.有什么 idea 吗?

推荐答案

如果munch.Munch来自this munch repository,你可以用safe_dump代替dump(from the readme).

data = {"A":"a", "B":munch.Munch({"C":"c"})}
with open("test.yaml", "w") as file:
    yaml.safe_dump(data, file)

它能产生你想要的东西:

A: a
B:
  C: c

Python相关问答推荐

如何修复使用turtle和tkinter制作的绘画应用程序的撤销功能

Pandas :多索引组

具有症状的分段函数:如何仅针对某些输入值定义函数?

使用scipy. optimate.least_squares()用可变数量的参数匹配两条曲线

在Pandas 日历中插入一行

使用plotnine和Python构建地块

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

按列分区,按另一列排序

更改键盘按钮进入'

如何将一个动态分配的C数组转换为Numpy数组,并在C扩展模块中返回给Python

实现神经网络代码时的TypeError

如何使用两个关键函数来排序一个多索引框架?

python中csv. Dictreader. fieldname的类型是什么?'

在代码执行后关闭ChromeDriver窗口

巨 Python :逆向猜谜游戏

pandas fill和bfill基于另一列中的条件

如何获得3D点的平移和旋转,给定的点已经旋转?

numpy数组和数组标量之间的不同行为

操作布尔值的Series时出现索引问题

随机森林n_估计器的计算