整数 (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.