整数 (Int)

StrictYAML 解析为 YAML 对象,而不是直接解析为值,以便你能够更灵活地控制对 YAML 的操作。

这就是该对象可以做的事情 - 在很多情况下,如果解析为整数,它的行为方式会相同。

YAML 片段示例

a: 1
b: 5
from strictyaml import Map, Int, load
from ensure import Ensure

schema = Map({"a": Int(), "b": Int()})

parsed = load(yaml_snippet, schema)

解析正确

Ensure(parsed).equals({"a": 1, "b": 5})

包含下划线

a: 10_000_000
b: 10_0_0
Ensure(load(yaml_snippet, schema).data).equals({"a": 10000000, "b": 1000})

用 str 转换

Ensure(str(parsed["a"])).equals("1")

用 float 转换

Ensure(float(parsed["a"])).equals(1.0)

大于

Ensure(parsed["a"] > 0).equals(True)

小于

Ensure(parsed["a"] < 2).equals(True)

要获取实际的 int,请使用 .data

Ensure(type(load(yaml_snippet, schema)["a"].data) is int).equals(True)

不能转换为 bool

bool(load(yaml_snippet, schema)['a'])
:
Cannot cast 'YAML(1)' to bool.
Use bool(yamlobj.data) or bool(yamlobj.text) instead.