假设我有一个朴素的类定义:
import yaml
class A:
def __init__(self):
self.abc = 1
self.hidden = 100
self.xyz = 2
def __repr__(self):
return yaml.dump(self)
A()
打印
!!python/object:__main__.A
abc: 1
hidden: 100
xyz: 2
是否有一种干净的方法可以从 yaml 转储的打印输出中删除包含 hidden: 100
的行?键名 hidden
是预先知道的,但它的 numeric 值可能会改变。
期望的输出:
!!python/object:__main__.A
abc: 1
xyz: 2
仅供引用:此转储仅用于显示,不会加载。
我想可以通过使用 yaml.representative
来抑制带有 key=hidden
的键/值对。另一种方法是在字符串输出中使用 RegEx 查找 hidden: [number]
。
最佳答案
我查看了 pyyaml 的文档,但没有找到实现您的目标的方法。解决方法是删除属性 hidden
,调用 yaml.dump
,然后将其重新添加到:
def __repr__(self):
hidden = self.hidden
del self.hidden
return yaml.dump(self)
self.hidden = hidden
退一步讲,为什么要对__repr__
使用yaml
呢?你能自己动手而不是依赖 yaml
吗?
关于python - 如何在 Python 中从 yaml 转储中删除键/值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33984604/