python - 解析 YAML 文件中的单个密钥
问题描述
我有一堆名义上的 YAML 文件,它们实际上可能包含也可能不包含有效的 YAML。
我关心的每个文件中只有少数几个键。我相信这些部分确实包含有效的 YAML。
有没有办法解析 YAML 文件,限制解析的键?
例如,如果我想要的密钥被命名为主机,我希望能够执行以下操作:
with open('maybe_valid.yaml', 'r') as file:
conf = yaml.load(file, Loader=yaml.SafeLoader, keys=['hosts'])
如果可以的话,我想避免手动扫描文件中的 key/s 并提取/猜测哪些行是该部分的一部分。
另外,如果我可以限制解析遍历的深度,那也可以。即,如果有办法告诉它只通过顶级节点。
解决方案
不幸的是,如果文件不完全在有效的 yaml 中, yaml.load() 将失败。
一些可以尝试的事情可能包括:
- 忽略所有没有您关心的密钥字符串的文件
- 通过 yaml.load() 运行所有文件并跟踪失败的文件。如果失败的 yaml 列表足够短,您可以手动完成。
- 找出无效 yaml 部分的一致模式,并在尝试 yaml.load() 之前将它们从这些文件中删除。
推荐阅读
- python - ValueError:绘制整数的数据框列时,x 和 y 必须具有相同的第一维
- data-science - 测试数据的周精度
- python-3.x - 根据第一次出现的字母在python中拆分字符串
- javascript - 滚动到底部不适用于手机中的 chrome 浏览器
- pandas - 我可以从两个列表创建一个熊猫数据框,但是对于第一个列表的每个元素,我附加 n 行作为第二个列表的元素吗?
- android - 在 SurfaceView 上重叠 GLSurfaceView,反之亦然
- docker - Docker 卷文件不出现在主机中
- r - 启动闪亮时的警报消息
- angular - 为什么当我单击侧边栏而不是隐藏我的菜单时,它会重新加载页面?角 8
- javascript - 使用 Jest 模拟函数内部的类