我对这个问题有类似的问题,我需要在YAML映射值字符串中插入换行符,而不想插入\n自己.答案建议使用:
Data: |
Some data, here and a special character like ':'
Another line of data on a separate line
Run Code Online (Sandbox Code Playgroud)
代替
Data: "Some data, here and a special character like ':'\n
Another line of data on a separate line"
Run Code Online (Sandbox Code Playgroud)
这也增加了一个新行末,即是不可接受的.
我尝试使用Data: >但显示出完全不同的结果.我在读完yaml文件后一直在剥离最终换行符,当然这样可行,但这并不优雅.有没有更好的方法来保留换行符而不在末尾添加额外的换行符?
我正在使用python 2.7 fwiw
如果使用,则将|标量转换为文字块样式标量.但是,默认行为|是剪切,并没有得到你想要的字符串(因为它留下了最后的换行符).
您可以|通过附加块咀嚼指示符来"修改"行为
跳闸
剥离由" - "扼流指示器指定.在这种情况下,最终换行符和任何尾随空行都会从标量内容中排除.
夹
如果未指定显式的chomping指示符,则剪切是使用的默认行为.在这种情况下,最终换行符将保留在标量的内容中.但是,任何尾随空行都会从标量内容中排除.
保持
保持由"+"扼流指示器指定.在这种情况下,最后的换行符和任何尾随的空行被认为是标量内容的一部分.这些额外的线条不会折叠.
通过将stripchomping操作符' -' 添加到' |',可以防止/剥离最终换行符:¹
import ruamel.yaml as yaml
yaml_str = """\
Data: |-
Some data, here and a special character like ':'
Another line of data on a separate line
"""
data = yaml.load(yaml_str)
print(data)
Run Code Online (Sandbox Code Playgroud)
得到:
{'数据':"某些数据,此处和特殊字符如':'\n另一行上的另一行数据"}
¹ 这是使用ruamel.yaml完成的,我是作者.你应该得到与PyYAML相同的结果(其中ruamel.yaml是一个超集,保留了往返的注释和文字标量块).
| 归档时间: |
|
| 查看次数: |
2328 次 |
| 最近记录: |