作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
使用 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/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!