如何在yaml中引用标记值

时间:2015-09-29 10:12:18

标签: yaml pyyaml

server: 
-  import: 
      cmd: GET GPRS <gprsEn> <gprsVa> <gprsSt>
-  update: 
      gprsEn: 1
      gprsVa: 202
      gprsSt: reegan

这是我的yaml文件如何在GET GPRS 1 202 reegan中引用gprsEn,gprsVa和gprsSt值我需要输出就像

GET GPRS 1 202 reegan

1 个答案:

答案 0 :(得分:1)

在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

你当然也可以扩展解析器,但它仍然需要通过箍来指定关键字/值扩展的来源,在你的情况下是不相关的(即不是一些顶层映射)。