Библиотека PyYAML, которую вы используете, не всегда дает вам это
вид контроля. Он отбрасывает первоначальную цитату, если вы лишние, когда вы
загрузить-затем-сбросить YAML (версия 1.1) вместе с ним. И если вы укажете
default_style='"'
каждая строка заключена в кавычки, включая ключи.
ruamel.yaml
(отказ от ответственности: я являюсь автором этого пакета) может сделать это
вид обхода, позволяя вам сохранить ваши конкретные и / или
лишние цитаты. Его механизм, чтобы сделать это, предоставляет вам типы
что вы можете использовать из коробки.
Благодаря
Дэвид Фрейзер
Вы также можете легко получить ключи сопоставления без кавычек, в то время как все остальные - в двойных кавычках:
import sys
import ruamel.yaml
def non_quoted_key(self, data):
if isinstance(data, ruamel.yaml.compat.string_types):
data = ruamel.yaml.scalarstring.PlainScalarString(data)
return self.represent_data(data)
x = {'name':'Alice', 'location':'New York', 'profession':'coder'}
yaml = ruamel.yaml.YAML()
yaml.default_flow_style = False
yaml.default_style = '"'
yaml.Representer.represent_key = non_quoted_key
yaml.dump(x, sys.stdout)
, что дает:
name: "Alice"
location: "New York"
profession: "coder"