Как читать все переменные YAML как строки, используя Python - PullRequest
0 голосов
/ 18 октября 2019

У меня есть 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 Ответ

2 голосов
/ 18 октября 2019

Вы можете передать аргумент Loader в yaml.load() следующим образом:

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

Это отключает автоматическое преобразование значения, так как BaseLoader "не разрешает и не поддерживает какие-либопомечать тегами и создавать только базовые объекты Python: списки, словари и строки Unicode. "- См. Ссылку ниже

PyYAML Документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...