如何利用另一个字典中匹配键的值更新YAML文件?
解决方案:用Python为YAML文件批量添加字段
嘿,这个需求很容易实现,咱们用Python的PyYAML库就能搞定,下面是完整的步骤和代码:
1. 先安装依赖库
首先确保你已经安装了PyYAML,如果没装的话,在终端执行:
pip install pyyaml
2. 编写处理代码
下面的代码会读取input.yaml,把my_dict里的电话号码对应添加到每个条目中,最后生成output.yaml:
import yaml # 定义你的电话号码字典 my_dict = {'001': '000-111-2222', '002': '000-111-2223', '003': '000-111-2224'} # 读取input.yaml文件 with open('input.yaml', 'r', encoding='utf-8') as f: yaml_data = yaml.safe_load(f) # 遍历每个条目,添加phone字段 for user_id, user_info in yaml_data.items(): if user_id in my_dict: user_info['phone'] = my_dict[user_id] # 将更新后的数据写入output.yaml with open('output.yaml', 'w', encoding='utf-8') as f: # 若想让用户ID(如'001')保留单引号,可添加 default_style="'" 参数 yaml.dump(yaml_data, f, sort_keys=False, allow_unicode=True)
代码说明:
yaml.safe_load():安全加载YAML内容,避免潜在的安全风险sort_keys=False:保留原YAML文件的条目顺序(默认PyYAML会按键排序)- 如果需要让输出的用户ID保留单引号,在
yaml.dump()里加上default_style="'"参数即可
3. 运行效果
执行代码后,你就能得到完全符合需求的output.yaml文件,每个用户条目下都会新增对应的phone字段。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

