如何移除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
代码说明
- 先初始化
cleaned_sales空列表,用于存放处理后的字典数据 - 循环遍历原
Sales中的每个字典对象 - 通过
item.values() | map('trim')对当前字典的所有值执行首尾空格清理 - 用
dict()方法将原键和清理后的值重新绑定为新字典cleaned_dict - 将新字典追加到
cleaned_sales列表中,最终得到完整的清理后数据
内容的提问来源于stack exchange,提问作者Blitzden
相关产品推荐
相关产品推荐

