我想改进YAML语法以使人类可读的交换格式。
我有这样的代码:
import yaml
class YamlFileLoader(yaml.Loader):
pass
class YamlFileDumper(yaml.Dumper):
pass
class YAMLPerson(yaml.YAMLObject):
yaml_tag = u'!person'
yaml_flow_style = False
def __init__(self):
self.first_name = u'John'
self.last_name = u'Doe'
y = YAMLPerson()
print yaml.dump(y)
它几乎不会产生难看的输出:
!person
first_name: !!python/unicode 'John'
last_name: !!python/unicode 'Doe'
如何将其转换为类似这样的人类可读语法:
person:
first_name: 'John'
last_name: 'Doe'
我应该添加最少的代码?
最佳答案
变色龙,
我通过google找到了您的帖子,因为我也在寻找相同的帖子。我找到了答案,并想到了与您分享的想法。
使用“ default_flow_style = False”,使输出易于阅读。请参阅示例代码。
import yaml
yaml_sample = """
a: 1
b:
c: 3
d: 4
"""
my_yaml = yaml.load(yaml_sample)
print "default style True == \n", yaml.dump(my_yaml)
print "default style False == \n", yaml.dump(my_yaml, default_flow_style=False)
输出,
default style True ==
a: 1
b: {c: 3, d: 4}
default style False ==
a: 1
b:
c: 3
d: 4
关于python - 如何强制Python yaml.YAMLObject转储人类可读格式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32713094/