如何使用Python以字符串形式读取所有YAML变量

时间:2019-10-18 17:50:39

标签: python yaml

我有一个YAML文件,其中的数据包含字符串和整数。当加载YAML文件并生成字典时,YAML“智能地”将未加引号的整数作为int类型。有什么简单的方法可以让YAML将所有内容都视为字符串,而无需在所有整数周围加上双引号?

这是YAML文件的一部分:

devices:
  rtr1:
    reachable: True
    instances: [Region-58,] 
    system_id: 0101.8800.0008
    level: Level-2
    isis_lsps:
      - lsp_id: RTR1CA22CWP.00-00
        instance: Region-58 
        prot_supported: "IPv4, IPv6"
        hostname: RTR1CA22CWP
        te_router_id: 10.1.0.8
        extended_reach:
          - ext_reach_id: 0101.8890.0207.00
            metric: 10
            adm_group: 0x601
            local_int_ip: 10.14.2.21
            remote_int_ip: 10.14.2.20
            max_bw: 400000
            max_reserve_bw: 380000
            te_metric: 10

使用yaml_load后,数字的类型为“ int”。
例如,指标:10

无论如何,yaml_load是否将数字10当作字符串,而不必在其周围加上双引号。

1 个答案:

答案 0 :(得分:2)

您可以像这样将Loader参数传递给yaml.load()

yaml.load(yaml, Loader=yaml.BaseLoader)

这将禁用自动值转换,因为BaseLoader“不解析或不支持任何标签,而仅构造基本的Python对象:列表,字典和Unicode字符串。” -请参阅下面的参考

PyYAML Documentation