Я не знаю, нужен ли вам YAML. Помимо использования тега YAML, кажется, что вы не заинтересованы в документе YAML. Так почему бы не использовать Jinja2 или какой-либо язык шаблонов?
from jinja2 import Template
tmpl = Template(u'''\
init_config: {}
instances:
- host: {{ IP }}
username: {{ username }}
password: {{ password }}
''')
print tmpl.render(
IP=u"1.2.3.4",
username=u"Username",
password=u"Password"
)
Я не знаю, если это хорошая идея, но если вам нужно только, чтобы получить файл с некоторыми полями изменились, вам не нужно на самом деле разобрать документ YAML и могут извлечь выгоду из шаблона язык напрямую.
Бонус: Используйте случай
Я работал с очень сложными YAML документов, для которых есть теги неизвестные
...
propertiesIDs: { 1, 2, 3, 4 }
globalID: !myapplication.InterfaceID &primitiveID
replication: !myapplication.replication
beginDate: 2012-09-10T20:00:03
endDate: 2020-09-10T20:00:04
replicant_uuid:
? 17169504-B6AB-11E4-8437-36E258BB2172
? 206B5842-B6AB-11E4-AAC3-36E258BB2172
...
Выполнение действительного разбора этого документа трудно и время потребляя. Мне нужно только заполнить некоторые значения, а YAML отправляется стороннему приложению. Поэтому вместо анализа YAML или попытки создать действительный документ напрямую с помощью pyyaml проще (более экономично, менее подвержено ошибкам), чтобы сгенерировать его непосредственно через шаблоны. Кроме того, языки шаблонов могут быть легко использованы с циклами для заполнения полей динамического размера.
Если вы используете [PyYAML] (http://pyyaml.org/wiki/PyYAMLDocumentation), вы можете использовать погрузчик для загрузки д ata и Dumper для записи данных в файл. Загруженные данные являются обычным словарем в Python, поэтому вы можете получить доступ к элементу по ключу и, таким образом, изменить его по своему усмотрению. –
Неясно, хотите ли вы, чтобы механизм шаблонов (и неверно направлял полезные ответы, будучи слишком узкими), или просто хотите разобрать YAML и заменить некоторые строковые значения на анализируемые данные. Будьте более конкретными и объясните, что вам нужно сделать и почему. – MariusSiuram
Это файл. Мне нужно проанализировать файл yaml и заменить его. – Chetan