概述
给input.yml …
pubkey: | -----BEGIN PUBLIC KEY----- MIGfMA0GCSq7OPxRrQEBAQUAA4GNADCBiQKBgQCvRVUKp6pr4qBEnE9lviuyfiNq QtG/OCyBDXL4Bh3FmUzfNI+Z4Bh3FmUx+z2n0FCv/4BpgHTDl8D95NPopWVo1RH2 UfhyMd6dQ/x9T5m+y38JMzmSVAk+Fqu8ya18+yQVOEyEIx3Gxpsgegow33gcxfjK EsUgJHXcpw7OPxRrCQIDAQAB -----END PUBLIC KEY-----
…使用python3执行此程序…
import yaml with open('input.yml',mode='r') as f: parsed = yaml.safe_load(f) with open('output.yml',mode='w') as f: yaml.dump(parsed,f)
…产生这个output.yml …
pubkey: '-----BEGIN PUBLIC KEY----- MIGfMA0GCSq7OPxRrQEBAQUAA4GNADCBiQKBgQCvRVUKp6pr4qBEnE9lviuyfiNq QtG/OCyBDXL4Bh3FmUzfNI+Z4Bh3FmUx+z2n0FCv/4BpgHTDl8D95NPopWVo1RH2 UfhyMd6dQ/x9T5m+y38JMzmSVAk+Fqu8ya18+yQVOEyEIx3Gxpsgegow33gcxfjK EsUgJHXcpw7OPxRrCQIDAQAB -----END PUBLIC KEY----- '
是否可以使用PyYAML保留块的结构?
这是添加到ruamel.yaml(免责声明:我是该软件包的作者)的一部分,因为它是从PyYAML派生的,并且仍然保持类似的设置.使用ruamel.yaml:
import ruamel.yaml as yaml yaml_str = """\ pubkey: | -----BEGIN PUBLIC KEY----- MIGfMA0GCSq7OPxRrQEBAQUAA4GNADCBiQKBgQCvRVUKp6pr4qBEnE9lviuyfiNq QtG/OCyBDXL4Bh3FmUzfNI+Z4Bh3FmUx+z2n0FCv/4BpgHTDl8D95NPopWVo1RH2 UfhyMd6dQ/x9T5m+y38JMzmSVAk+Fqu8ya18+yQVOEyEIx3Gxpsgegow33gcxfjK EsUgJHXcpw7OPxRrCQIDAQAB -----END PUBLIC KEY----- """ data = yaml.load(yaml_str,Loader=yaml.RoundTripLoader) print(yaml.dump(data,Dumper=yaml.RoundTripDumper,indent=4))
给你:
pubkey: | -----BEGIN PUBLIC KEY----- MIGfMA0GCSq7OPxRrQEBAQUAA4GNADCBiQKBgQCvRVUKp6pr4qBEnE9lviuyfiNq QtG/OCyBDXL4Bh3FmUzfNI+Z4Bh3FmUx+z2n0FCv/4BpgHTDl8D95NPopWVo1RH2 UfhyMd6dQ/x9T5m+y38JMzmSVAk+Fqu8ya18+yQVOEyEIx3Gxpsgegow33gcxfjK EsUgJHXcpw7OPxRrCQIDAQAB -----END PUBLIC KEY-----
至少使用Python 2.7和3.5.
indent = 4是必要的,因为RoundTripDumper默认为两个空格缩进和原始缩进
不保留文件(不这样做可以简化重新缩进YAML文件).
如果您无法切换到ruamel.yaml,您应该能够使用其源代码提取所需的所有更改,但如果可以,您还可以使用其他功能,如注释和合并密钥名称保留.
总结
以上是编程之家为你收集整理的python – 转储解析文档时是否可以保留YAML块结构?全部内容,希望文章能够帮你解决python – 转储解析文档时是否可以保留YAML块结构?所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧