gpt4 book ai didi

python - 我可以在 yaml/pyyaml 中转储空白而不是 null 吗?

转载 作者:太空狗 更新时间:2023-10-29 21:25:45 24 4
gpt4 key购买 nike

使用 PyYAML,如果我读入一个字典中包含空白值的文件:

test_str = '''
attrs:
first:
second: value2
'''

这为键 first 返回 None:

>>> data = yaml.load(test_str)
>>> data
{'attrs': {'second': 'value2', 'first': None}}

但是在写的时候,None值被替换成了null:

>>> print(yaml.dump(data, default_flow_style=False))
attrs:
first: null
second: value2

有没有办法格式化转储输出以打印空白标量而不是 null

最佳答案

基于@Anthon 的 excellent answer ,我能够设计出这个解决方案:

def represent_none(self, _):
return self.represent_scalar('tag:yaml.org,2002:null', '')

yaml.add_representer(type(None), represent_none)

根据我对 PyYAML code 的理解,为现有类型添加一个表示器应该简单地替换现有的表示器。

这是一个全局更改,这意味着所有后续转储都使用空白。如果程序中一些不相关的其他代码依赖于 None 以“正常”方式表示,例如您导入的库也使用 PyYAML,该库将不再以预期的方式/正确地工作,在这种情况下,子类化是正确的方法。

关于python - 我可以在 yaml/pyyaml 中转储空白而不是 null 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com