python - 如何在 Python 中从 yaml 转储中删除键/值对?

标签 python regex string python-3.x yaml

假设我有一个朴素的类定义:

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/

相关文章:

javascript - JavaScript 中重复的字符串常量是否被解释器优化?

c++ - 括号之间的两个字符串在 C++ 中用逗号分隔

python - 从 json 文件将嵌套数据导入 pandas

python - 通过将列表或字符串的列与另一个列表匹配来进行分组并创建新的数据框

regex - 这些字符在 HTML、Postgres 和 Bash 中使用是否安全?

regex - hive 找到最后一次出现

python - pip-selfcheck.json 与 virtualenv

python - 使用 Lambda Python 将 json 写入 Parquet 对象以放入 S3

仅适用于英文和数字字符的 Javascript 正则表达式

c++ - 尝试替换字符串中的字符时发生内存泄漏