Как добавить _ между группами цифр в YAML, используя PyYAML Python - PullRequest
1 голос
/ 13 февраля 2020

В Python вы можете сделать числа более читабельными, добавив _ между группами цифр:

x = 1_234_567

Однако дамп с использованием YAML не будет делать то же самое:

import yaml
yaml.dump(1_234_567) # => "1234567"

Можно ли печатать номера PyYAML с красиво сгруппированными цифрами?

1 Ответ

1 голос
/ 13 февраля 2020

Вы можете настроить поведение PyYAML для любого типа, добавив представитель :

import re
import yaml

def pretty_print_int(n):
    return re.sub(r"(?!^)(?=(?:...)+$)", "_", str(n))

def represent_int(dumper, data):
    return dumper.represent_scalar("tag:yaml.org,2002:int", pretty_print_int(data))

yaml.add_representer(int, represent_int)

Значение magi c tag:yaml.org,2002:int взято из YAML spe c и известен PyYAML.

PyYAML успешно загрузит сгенерированный YAML. Форматирование чисел с подчеркиванием соответствует YAML 1.1 spe c, но не YAML 1.2 spe c, поэтому некоторые другие парсеры могут иметь проблемы с ним.

...