我有一个嵌套列表
str
,如下所示:
[["22","ABC","XYZ"],["555","IJK","PQR"],...]
我必须将内部列表的元素与
/
组合起来,然后用 ,
将它们连接起来形成一个字符串,如下所示:
22/ABC/XYZ,555/IJK/PQR,...
我尝试过
set_fact
和 jinja2 但没有运气。
- set_fact:
str1: |-
{%- set fs = "" -%}
{%- set im = "" -%}
{%- for i in str -%}
{%- for elem in i -%}
{%- set im = im + "/" + elem -%}
{%- endfor -%}
{%- set fs = fs + "," + im -%}
{%- endfor -%}
{{ fs }}
- debug: var=str1
输出:
TASK [debug var=str1] **********************************
ok: [host1] => {
"str1": ""
预期输出:
TASK [debug var=str1] **********************************
ok: [host1] => {
"str1": "22/ABC/XYZ,555/IJK/PQR"
谢谢
首先映射过滤器join(/)到列表的项目,然后join(,)它们
- set_fact:
str1: "{{ str | map('join', '/') | join(',') }}"
- debug: var=str1
给予
str1: 22/ABC/XYZ,555/IJK/PQR
使用
wiht_list
创建一个带有列表的 var,其中包含用 /
连接的项目,然后用 ,
连接它。
- set_fact:
str1: "{{ str1 | default([]) + [ item | join('/') ] }}"
with_list: "{{ str }}"
- debug:
msg: "{{ str1 | join(',') }}"