Там нет строки замещения определяется где-нибудь в спецификации YAML, поэтому вам нужно сделать это самостоятельно, например делая:
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))
который печатает именно вывод, который вы хотите:
GET GPRS 1 202 reegan
Конечно, Вы можете также расширить синтаксический анализатор, но все равно нужно будет пройти через обручи, чтобы указать источник ключевого слова/value, которое в вашем случае не имеет отношения к делу (т. е. не отображение некоторого количества).
Благодарим за решение, если есть какие-либо возможности в частичной записи в yaml file.i, у вас есть еще 10 карт, у меня есть изменение определенного значения карты –
@ReeganMiranda Да вы можете писать файлы YAML, если вы используете мою библиотеку (ruamel.yaml) с режимом RoundTrip без потери данных. Если вы хотите частично записать или записать частично разрешенные (с указанным выше способом) данные, вы можете это сделать. Вы можете написать результат, в том числе комментарии и т. Д., Если вы не замените полный dicts новыми (т. Е. Обновите только существующее значение ключа) – Anthon