В Python3 я загружаю кусок YAML. Загрузчик пытается угадать правильные типы, но я не совсем доволен. Я хочу, чтобы ключи dict всегда были строками.
Сначала продемонстрируйте минималистичный фрагмент YAML, который легко вставить прямо в ваш интерпретатор Python. Излишне говорить, что мои данные в реальном мире намного сложнее.
txt = """
---
one: 1
2: two
"""
Сначала «обычная» нагрузка:
yaml.load(txt)
{2: 'two', 'one': 1}
Обратите внимание, как ключ 2 был загружен как число, а не как строка. Тогда давайте попробуем что-то другое:
yaml.load(txt, Loader=yaml.BaseLoader)
{'2': 'two', 'one': '1'}
Теперь все сделано в виде строк. К сожалению также 1 , который, как значение, мне нужен как число.
Таким образом, у меня могут быть как ключи, так и значения, принудительно заданные для строк, или ни одного.
Конечно, я могу создать постпроцессор, который просматривает загруженные данные и копирует их в новую переменную, с ключами dict, принудительно передаваемыми в строки, но я думаю, что это можно сделать более элегантно в загрузчике YAML.
Предложения