와 YAML에 다음과 같은 레이아웃을 노드를 내가 좋아하는 것 삽입 , 나는이 출력을 얻고 있습니다. 그 도구는 [] 안에 캡슐화되어 있습니다 :인쇄 한 것으로 ruamel
다른 조합을 시도했지만 작동하지 않았습니까?
와 YAML에 다음과 같은 레이아웃을 노드를 내가 좋아하는 것 삽입 , 나는이 출력을 얻고 있습니다. 그 도구는 [] 안에 캡슐화되어 있습니다 :인쇄 한 것으로 ruamel
다른 조합을 시도했지만 작동하지 않았습니까?
.
그래서 대신하고는 :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
일단 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
내 질문을 편집했습니다. 출력에 문제가 있습니다. '- http : // bio.tools/abyss'와 함께 줄 바꿈을하고 싶을 때 도구 이름에 []를 사용하고 있습니다. @larsks – ypriverol
당신이 내 대답을 완전히 이해했는지 확신 할 수는 없지만, 몇 가지 추가 사례를 추가하여 문제를 명확히하려고 노력했습니다. – larsks
'dump()에 예상치 못한 키워드 인자가있다 'default_flow_style '' 나는 jinja2 용 플러그인에서'from ruamel.yaml import YAML'을 사용하고있다. – ypriverol
감사합니다, @Anthon. 그것은 완벽하게 잘 작동합니다. 이 예제 중 일부가 라이브러리의 유용성을 향상시키기 위해 문서로 직접 이동하면 좋을 것입니다. – ypriverol
이 답변으로 문제가 해결되면 답변 옆에있는 ✔ (체크 표시)를 클릭하여 * 수락하십시오. 그것은 다른 사람들이 귀하의 문제가 해결되었다는 것을 알면서도 의견을 읽지 않고 그 방법을 알고있는 방식입니다.또한 목록의 질문 및 답변의 모양을 변경합니다. 더 나은 답변이 나오면 수락 된 답변을 언제든지 변경할 수 있습니다. – Anthon