【发布时间】:2017-03-28 07:25:18
【问题描述】:
我有一个要解析的 YAML 文件。
出于多种原因,我想禁止在锚点中使用点.或只需在解析时将其替换为_。
简单地说,我想从这里开始:
foo:
bar.baz:
- egg
- spam
到那个:
foo:
bar_baz:
- egg
- spam
我知道这种转换可以在生成的 Python 字典上执行,但它不是正确的地方:解析器应该抛出错误或者它应该替换有问题的值。
我已经尝试继承Loader 以进行这种转换,但似乎没有一个被覆盖的函数有任何效果。
【问题讨论】:
-
您认为“节点名称”是什么? YAML 1.2 有节点,但根据规范它们没有名称(旧的 YAML 1.1 也是如此,这是 PyYAML 可以处理的)。您将标签称为“节点名称”还是锚点?还是您在谈论将键映射为节点名称?如果您提供一个小的示例 YAML 文件(最好是手动“转换”的版本),那就太好了。所有这些(锚点、标签、键)都可以即时更改,但需要不同的编程。
-
已更新。问题很简单,我只是希望钩子也是。 :)
-
即映射Node中键值对的key。
Loader需要一个替代的Constructor,而这并非易事。