2015-09-22 47 views
1

我想改善YAML語法以使人可讀的交換格式。如何強制Python yaml.YAMLObject轉儲人類可讀的格式?

我有這樣的代碼:

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' 

什麼極小我應該添加的代碼?

回答

2

變色龍,

我通過谷歌達到了你的帖子,我也一直在尋找相同。我找到了答案,並想到與你分享。

使用「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 
相關問題