【发布时间】:2021-11-03 20:47:24
【问题描述】:
我有一堆名义上的 YAML 文件,它们实际上可能包含也可能不包含有效的 YAML。
我关心的每个文件中只有少数几个键。而且我确信这些部分确实包含有效的 YAML。
有没有办法解析 YAML 文件,限制解析的键?
例如如果我想要的密钥被命名为主机,我希望能够执行以下操作:
with open('maybe_valid.yaml', 'r') as file:
conf = yaml.load(file, Loader=yaml.SafeLoader, keys=['hosts'])
如果可以的话,我希望避免手动扫描文件中的密钥并提取/猜测哪些行是该部分的一部分。
另外,如果我可以限制解析遍历的深度,那也可以。 IE。如果有办法告诉它只传递顶级节点。
【问题讨论】:
-
没有办法做到这一点:如果文件实际上不是有效的 YAML,YAML 解析器将无法找到
hosts键。一旦命中无效数据,所有赌注都将关闭。如果不解析整个文件,就无法识别“仅顶级节点”。也许您可以提前应用一些文本操作来清理数据,或者只提取您想要的部分?