Il n'y a pas de substitution de chaîne définie nulle part dans la spécification YAML, donc vous devez le faire vous-même par exemple en faisant:
import ruamel.yaml as yaml
yaml_str = """\
server:
- import:
cmd: GET GPRS <gprsEn> <gprsVa> <gprsSt>
- update:
gprsEn: 1
gprsVa: 202
gprsSt: reegan
"""
data = yaml.load(yaml_str, Loader=yaml.RoundTripLoader)
cmd = data['server'][0]['import']['cmd'].replace('<', '{').replace('>', '}')
keywords = data['server'][1]['update']
print(cmd.format(**keywords))
qui imprime exactement la sortie que vous voulez:
GET GPRS 1 202 reegan
Vous pouvez bien sûr aussi d'élargir l'analyseur, mais il aurait encore besoin de passer par des cerceaux pour spécifier la source du mot-clé/l'expansion de valeur qui, dans votre cas, n'est pas pertinente (c'est-à-dire pas une cartographie de haut niveau).
Merci pour la solution, le cas échéant est-il en écriture partielle dans le fichier yaml.j'ai plus la carte 10 est là, j'ai changer la valeur de carte particulière –
@ReeganMiranda Oui, vous pouvez écrire des fichiers YAML, si vous utilisez ma bibliothèque (ruamel.yaml) avec le mode RoundTrip sans perte de données. Si vous voulez écrire en partie ou écrire des données partiellement résolues (avec la méthode ci-dessus), vous pouvez le faire. Vous pouvez écrire le résultat, y compris les commentaires etc, tant que vous ne remplacez pas les dicts complets par de nouveaux (par exemple, ne mettez à jour qu'une valeur de clé existante) – Anthon