2017-10-13 36 views
1

와 YAML에 다음과 같은 레이아웃을 노드를 내가 좋아하는 것 삽입 , 나는이 출력을 얻고 있습니다. 그 도구는 [] 안에 캡슐화되어 있습니다 :인쇄 한 것으로 ruamel

다른 조합을 시도했지만 작동하지 않았습니까?

답변

1

.

그래서 대신하고는 :

yaml_file_content['extra']['identifiers']['biotools'] = ['http://bio.tools/abyss'] 

을 한 후 사용하여 블록 스타일의 모든 복합 요소의 출력을 강제로 : 당신은

yaml_file_content['extra']['identifiers']['biotools'] = ['- http://bio.tools/abyss'] 

일을해야

yaml.default_flow_style = False 

하는 경우 더 세분화 된 컨트롤을 원할 경우 ruamel.yaml.comments.CommentedSeq 인스턴스를 만듭니다.

tmp = ruamel.yaml.comments.CommentedSeq(['http://bio.tools/abyss']) 
tmp.fa.set_block_style() 
yaml_file_content['extra']['identifiers']['biotools'] = tmp 
+0

감사합니다, @Anthon. 그것은 완벽하게 잘 작동합니다. 이 예제 중 일부가 라이브러리의 유용성을 향상시키기 위해 문서로 직접 이동하면 좋을 것입니다. – ypriverol

+1

이 답변으로 문제가 해결되면 답변 옆에있는 ✔ (체크 표시)를 클릭하여 * 수락하십시오. 그것은 다른 사람들이 귀하의 문제가 해결되었다는 것을 알면서도 의견을 읽지 않고 그 방법을 알고있는 방식입니다.또한 목록의 질문 및 답변의 모양을 변경합니다. 더 나은 답변이 나오면 수락 된 답변을 언제든지 변경할 수 있습니다. – Anthon

1

일단 YAML 파일을로드하면 더 이상 "yaml"이 아닙니다. 지금은 파이썬 데이터 구조의, 그리고 biotools 키의 내용은 list이다, 당신이 할 수있는 append 그것을 다른 파이썬 목록처럼

>>> import ruamel.yaml as yaml 
>>> data = yaml.load(open('data.yml')) 
>>> data['extra']['identifiers']['biotools'] 
['http://bio.tools/abyss'] 

:

>>> data['extra']['identifiers']['biotools'].append('http://bio.tools/anothertool') 
>>> data['extra']['identifiers']['biotools'] 
['http://bio.tools/abyss', 'http://bio.tools/anothertool'] 

그리고 당신은 밖으로 인쇄하는 경우 유효 데이터 구조 YAML :

>>> print(yaml.dump(data)) 
extra: 
    identifiers: 
    biotools: [http://bio.tools/abyss, http://bio.tools/anothertool] 

물론 어떤 이유에서든 목록 표현이 마음에 들지 않으면 s yntactically 동등한 : - http://bio.tools/abyss의 대시 시퀀스의 요소를 표시하고 블록 스타일의 파이썬 목록을 덤프 경우 출력에 추가됩니다

>>> print(yaml.dump(data, default_flow_style=False)) 
extra: 
    identifiers: 
    biotools: 
    - http://bio.tools/abyss 
    - http://bio.tools/anothertool 
+0

내 질문을 편집했습니다. 출력에 문제가 있습니다. '- http : // bio.tools/abyss'와 함께 줄 바꿈을하고 싶을 때 도구 이름에 []를 사용하고 있습니다. @larsks – ypriverol

+0

당신이 내 대답을 완전히 이해했는지 확신 할 수는 없지만, 몇 가지 추가 사례를 추가하여 문제를 명확히하려고 노력했습니다. – larsks

+0

'dump()에 예상치 못한 키워드 인자가있다 'default_flow_style '' 나는 jinja2 용 플러그인에서'from ruamel.yaml import YAML'을 사용하고있다. – ypriverol