Ole*_*kov 7 python regex string yaml python-3.x
假设我有一个天真的类定义:
import yaml
class A:
def __init__(self):
self.abc = 1
self.hidden = 100
self.xyz = 2
def __repr__(self):
return yaml.dump(self)
A()
Run Code Online (Sandbox Code Playgroud)
印花
!!python/object:__main__.A
abc: 1
hidden: 100
xyz: 2
Run Code Online (Sandbox Code Playgroud)
是否有一种干净的方法来删除包含hidden: 100
yaml dump的打印输出的行?密钥名称hidden
是事先已知的,但其数值可能会更改.
期望的输出:
!!python/object:__main__.A
abc: 1
xyz: 2
Run Code Online (Sandbox Code Playgroud)
仅供参考:此转储仅供显示,不会加载.
我想可以使用key hidden
来使用key =来抑制键/值对yaml.representative
.另一种方法是hidden: [number]
在字符串输出中使用RegEx 查找.
我查看了 pyyaml 的文档,但没有找到实现您目标的方法。解决方法是删除 attribute hidden
、 call yaml.dump
,然后将其添加回:
def __repr__(self):
hidden = self.hidden
del self.hidden
return yaml.dump(self)
self.hidden = hidden
Run Code Online (Sandbox Code Playgroud)
退一步来说,你为什么要使用yaml
for __repr__
?您可以自己推出而不是依赖吗yaml
?