无模式解析 YAML
使用 strictyaml 时,不必指定模式。如果这样做,将使用验证器“Any”,它将接受任何映射、任何列表和任何标量值(与普通 YAML 不同,它将始终解释为字符串)。
这是快速原型设计时的推荐方法,并且期望的模式是流动的。
当原型代码解析具有更固定结构的 YAML 时,建议你使用模式“锁定它”。
Any 验证器也可以在固定结构中使用。
示例 yaml_snippet
a:
x: 9
y: 8
b: 2
c: 3
from strictyaml import Str, Any, MapPattern, load
from ensure import Ensure
不使用验证器解析
Ensure(load(yaml_snippet)).equals({"a": {"x": "9", "y": "8"}, "b": "2", "c": "3"})
使用 any 验证器解析 - 等效
Ensure(load(yaml_snippet, Any())).equals({"a": {"x": "9", "y": "8"}, "b": "2", "c": "3"})
修复更高级别的模式
Ensure(load(yaml_snippet, MapPattern(Str(), Any()))).equals({"a": {"x": "9", "y": "8"}, "b": "2", "c": "3"})