Ich weiß nicht, ob Sie YAML benötigen. Abgesehen von der Verwendung des YAML-Tags scheint es, dass Sie kein Interesse am YAML-Dokument haben. Warum also nicht Jinja2 oder eine Template-Sprache benutzen?
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"
)
Ich weiß nicht, ob es eine gute Idee ist, aber wenn Sie nur eine Datei zu erhalten, müssen mit einigen Bereichen verändert, brauchen Sie nicht wirklich das YAML Dokument zu analysieren und aus einer Vorlage profitieren können Sprache direkt.
Bonus: Use Case
Ich habe mit sehr komplexen YAML Dokumenten gearbeitet, für die es Tags unbekannt
...
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
...
einen gültigen Parse dieses Dokuments Performing ist schwierig und zeit -konsumierend. Ich muss nur einige Werte auffüllen, und der YAML wird an eine Anwendung von Drittanbietern gesendet. Anstatt also das YAML zu analysieren oder zu versuchen, ein gültiges Dokument direkt mit pyyaml zu erzeugen, ist es einfacher (zeiteffizienter, weniger fehleranfällig), es direkt über Templates zu generieren. Darüber hinaus können Vorlagensprachen problemlos mit Loops verwendet werden, um dynamisch große Felder zu füllen.
Wenn Sie [PyYaml] (http://pyyaml.org/wiki/PyYAMLDocumentation), können Sie Loader verwenden d zu laden Ata und Dumper, um Daten in Datei zu schreiben. Die geladenen Daten sind ein gewöhnliches Wörterbuch in Python, so dass Sie Element für Schlüssel zugreifen und es so ändern können, wie Sie es wünschen. –
Es ist nicht klar, ob Sie eine Template-Engine (und zu viele sinnvolle Antworten, die zu eng sind) verwenden möchten oder einfach nur eine YAML analysieren und die analysierten Daten durch einige String-Werte ersetzen möchten. Seien Sie genauer und erklären Sie, was Sie einfach erreichen und warum. – MariusSiuram
Es ist eine Datei. Ich muss eine YAML-Datei analysieren und den Inhalt ersetzen. – Chetan