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

如何移除Ansible中键值对列表的空格?

移除Ansible字典列表中值的首尾空格

问题场景

你需要清理Sales列表内各字典值的首尾空格,原数据结构如下:

"Sales": [
    {
        "Category": " Toys ",
        "NumberSold": " 101 ",
        "ItemNumber": "#30",
        "Area": " West "
    },
    {
        "Category": " Toys ",
        "NumberSold": " 350 ",
        "ItemNumber": "#40",
        "Area": " South "
    },
    {
        "Category": " Toys ",
        "NumberSold": " 200 ",
        "ItemNumber": "#6",
        "Area": " East "
    }
]

之前尝试的trim、map('trim')、regex_replace等组合未生效,核心原因是没有正确处理嵌套的字典结构——要么只处理了值列表但未绑定回原键,要么直接对字典对象而非字符串值操作。

可行解决方案

以下方案无需使用from_yaml过滤器,可在Ansible自动化平台正常运行:

# 初始化空列表用于存储清理后的数据
- set_fact:
    cleaned_sales: []

# 遍历原Sales列表,逐个清理字典中的值并重组
- set_fact:
    cleaned_sales: "{{ cleaned_sales + [ cleaned_dict ] }}"
  loop: "{{ Sales }}"
  vars:
    # 对当前字典的所有值做首尾空格清理,再与原键重组为新字典
    cleaned_dict: "{{ dict( item.keys() | zip( item.values() | map('trim') ) ) }}"

# 验证清理结果
- debug:
    var: cleaned_sales

代码说明

  1. 先初始化cleaned_sales空列表,用于存放处理后的字典数据
  2. 循环遍历原Sales中的每个字典对象
  3. 通过item.values() | map('trim')对当前字典的所有值执行首尾空格清理
  4. 用dict()方法将原键和清理后的值重新绑定为新字典cleaned_dict
  5. 将新字典追加到cleaned_sales列表中,最终得到完整的清理后数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:44:55