2013-08-13 3 views
0

나는 YAML 파이썬을 사용하여이 사전PyYaml 출력 파일에 문자열 형식을 설정 하시겠습니까?

data = { yaml: { l: 'hi\nif x = y:\n print z\n' } } 

을 저장할.

yaml: 
    l: "hi\nif x = y:\n print z\n" 

하지만 난 YAML이 형식은 알고 : 나는 yaml.dump(data, default_flow_style=False) 사용하는 경우, 출력은

yaml: 
    l: 
    | 
    hi 
    if x = y: 
     print z 

나는 위의 형식으로 출력을 가지고 어떻게해야합니까?

답변

1

은 YAML 스칼라를 사용해보십시오 :

YAML Scalar

import yaml 
from collections import OrderedDict  

class literal(str): pass 

def literal_presenter(dumper, data): 
    return dumper.represent_scalar('tag:yaml.org,2002:str', data, style='|') 
yaml.add_representer(literal, literal_presenter) 

def ordered_dict_presenter(dumper, data): 
    return dumper.represent_dict(data.items()) 
yaml.add_representer(OrderedDict, ordered_dict_presenter) 

d_temp = OrderedDict(l=literal('hi\nif x = y:\n print z\n')) 
d = OrderedDict(yaml=literal(yaml.dump(d_temp))) 
print(yaml.dump(d)) 

출력 :

yaml: | 
     l: | 
     hi 
     if x = y: 
     print z 

는 당신을 위해 ...

작동 희망
관련 문제