使用ruamel.yaml dump输出出现多余"..."的原因排查
ruamel.yaml dump输出额外
...符号的原因及解决 问题场景
我正在学习用ruamel.yaml处理YAML文件排序,现有example.yml内容如下:
--- - job: name: this is the job name
对应的Python代码:
import sys import ruamel.yaml yaml = ruamel.yaml.YAML() # defaults to round-trip # Read YAML file with open('example.yml', 'r') as f: data = yaml.load(f) yaml.dump(data[0]['job']['name'], sys.stdout)
执行后成功输出作业名称,但额外多了一行...,想知道这个符号的来源和原因。
原因解析
...是YAML规范里的块样式标量结束标记。ruamel.yaml默认启用的round-trip模式,会严格遵循YAML的格式规则:当你直接dump一个单独的标量(比如这里的字符串this is the job name)时,会以块样式输出该标量,而块标量需要...来明确标记内容的结束位置,避免后续可能的内容被误解析成当前标量的一部分。
解决方法
方法1:直接用print输出(推荐)
如果你只是需要输出这个字符串内容,没必要用yaml.dump,直接用Python的print函数即可,不会产生额外标记:
print(data[0]['job']['name'])
方法2:修改ruamel.yaml配置
如果一定要用yaml.dump输出,可通过修改配置让标量以流式(inline)方式输出,这样就不会生成...:
import sys import ruamel.yaml yaml = ruamel.yaml.YAML() yaml.default_style = '' # 设置标量为流式输出 with open('example.yml', 'r') as f: data = yaml.load(f) yaml.dump(data[0]['job']['name'], sys.stdout)
内容的提问来源于stack exchange,提问作者Aleksey Tsalolikhin
相关产品推荐
相关产品推荐

