【发布时间】:2019-05-24 15:53:19
【问题描述】:
我正在尝试添加新的列表成员,但没有成功。
这就是我所拥有的:
import sys
from ruamel.yaml import YAML
from ruamel.yaml.comments import CommentedMap as cm
from ruamel.yaml.comments import CommentedSeq as cs
yaml_doc = """\
Condition:
Like:
- !Join ['',['abc:def:', !Ref 'XYZ::Rert', ':', '123', ':tty:*']]
"""
yaml = YAML()
yaml.preserve_quotes = True
yaml.width = 4096
data = yaml.load(yaml_doc)
ref = data['Condition']['Like']
new_member = "!Join ['',['abc:def:', !Ref 'XYZ::Rert', ':', '456', ':tty:*']]"
# new_member2 = '!Join ['',['abc:def:', !Ref 'XYZ::Rert', ':', '456', ':tty:*']]'
ref.append(new_member)
# ref.append(new_member2)
yaml.dump(data, sys.stdout)
输出是
Condition:
Like:
- !Join ['', ['abc:def:', !Ref 'XYZ::Rert', ':', '123', ':tty:*']]
- "!Join ['',['abc:def:', !Ref 'XYZ::Rert', ':', '456', ':tty:*']]"
我不想要双引号。
如果我取消注释与 new_member2 相关的部分,我会得到错误
File "ec2-recover-2.py", line 18
new_member2 = '!Join ['',['abc: def: ', !Ref 'XYZ: : Rert', ': ', '456', ': tty: *']]'
^
SyntaxError: invalid syntax
如何以!Join ['', ['abc:def:', !Ref 'XYZ::Rert', ':', '123', ':tty:*']] 这种格式添加成员列表,并且在最终 YAML 中没有单引号或双引号?
【问题讨论】:
-
yaml.preserve_quotes = True可能是造成这种情况的原因。尝试将其设置为False -
@rdas 这不是导致它的原因,它应该设置为
True,否则:tty:*周围的虚假单引号将从输出中删除。 -
我需要
yaml.preserve_quotes = Trueflag,因为我需要它用于我的示例中没有显示的文件的其他部分
标签: python yaml ruamel.yaml