You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何从复杂YAML文件提取指定键生成新YAML文件

根因说明

你当前输出丢失外层键的原因是:调用yaml.dump时仅传入了cfg['ab']、cfg['thisone']对应的取值,没有将外层键和对应值打包为新的字典结构,dump时自然不会生成外层键名。

最优实现方案

直接构造仅包含目标键的新字典,再对这个新字典执行dump操作即可,示例代码如下:

import yaml

# 加载原YAML文件,推荐使用safe_load避免任意代码执行安全风险
with open("source.yaml", "r", encoding="utf-8") as f:
    cfg = yaml.safe_load(f)

# 构造仅保留目标键的新字典
new_cfg = {
    "ab": cfg["ab"],
    "thisone": cfg["thisone"]
}

# 写入新YAML文件
# 传入sort_keys=False可以保留键的原始顺序,避免被自动按字母排序
# 传入allow_unicode=True避免中文等非ASCII字符被转义
with open("target.yaml", "w", encoding="utf-8") as f:
    yaml.dump(new_cfg, f, sort_keys=False, allow_unicode=True)

如果后续需要保留的键较多,可以用更灵活的列表推导写法,同时兼容键不存在的场景:

# 定义所有需要保留的外层键
keep_keys = ["ab", "thisone"]
# 仅保留存在于原配置中的键,避免KeyError
new_cfg = {key: cfg[key] for key in keep_keys if key in cfg}

运行上述代码后生成的新YAML文件就会完全符合你需要的格式。


内容的提问来源于stack exchange,提问作者JrRockeTer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:45:04