如何使用 Python 的 PyYAML 在 YAML 中的数字组之间添加 _
How to add _ between group of digits in YAML using Python's PyYAML
在 Python 中,您可以通过在数字组之间添加 _
来提高数字的可读性:
x = 1_234_567
但是使用 YAML 进行转储不会产生同样的效果:
import yaml
yaml.dump(1_234_567) # => "1234567"
我可以让 PyYAML 打印数字并很好地分组数字吗?
您可以通过添加 representer:
为任何类型自定义 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)
神奇的 tag:yaml.org,2002:int
值取自 YAML spec 并为 PyYAML 所知。
PyYAML 将成功加载生成的 YAML。使用下划线格式化数字符合 YAML 1.1 spec 但不符合 YAML 1.2 规范,因此其他一些解析器可能会遇到问题。
在 Python 中,您可以通过在数字组之间添加 _
来提高数字的可读性:
x = 1_234_567
但是使用 YAML 进行转储不会产生同样的效果:
import yaml
yaml.dump(1_234_567) # => "1234567"
我可以让 PyYAML 打印数字并很好地分组数字吗?
您可以通过添加 representer:
为任何类型自定义 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)
神奇的 tag:yaml.org,2002:int
值取自 YAML spec 并为 PyYAML 所知。
PyYAML 将成功加载生成的 YAML。使用下划线格式化数字符合 YAML 1.1 spec 但不符合 YAML 1.2 规范,因此其他一些解析器可能会遇到问题。