Мне не нужны кавычки в выводе.Итак, как предотвратить появление кавычек в выводе?
В YAML строки можно заключать в кавычки, только если они не имеют другого значения.124
это число, а не строка.true
это логическое значение, а не строка.!foo
обозначает тег , а не строку.Таким образом, если вам нужна строка без кавычек, начинающаяся с восклицательного знака, вам не повезло, вы не можете сделать это в YAML.
Если вы действительно хотите вставить тег, как считает Дечезе, вам нужносделать некоторую работу.Самый простой способ - реализовать класс, который будет представлен следующим образом.
import ruamel
class Include(ruamel.yaml.YAMLObject):
yaml_constructor = ruamel.yaml.RoundTripConstructor
yaml_representer = ruamel.yaml.RoundTripRepresenter
yaml_tag = '!include'
def __init__(self, file):
self.file = file
@classmethod
def from_yaml(cls, loader, node):
return cls(loader.construct_scalar(node))
@classmethod
def to_yaml(cls, dumper, data):
if isinstance(data.file, ruamel.yaml.scalarstring.ScalarString):
style = data.file.style # ruamel.yaml>0.15.8
else:
style = None
return dumper.represent_scalar(cls.yaml_tag, data.file, style=style)
(Бесстыдно скопировано с ruamel/_test/test_add_xxx.py
.) Затем вы можете выполнить
code.insert(1, 'test', Include('test.yaml'), comment="new key")