在 Ansible 中加入嵌套列表的元素
Joining elements of nested lists in Ansible
我有一个嵌套列表 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"
谢谢
使用 wiht_list
创建一个带有列表的 var,其中包含用 /
连接的项目,然后用 ,
.
连接它
- set_fact:
str1: "{{ str1 | default([]) + [ item | join('/') ] }}"
with_list: "{{ str }}"
- debug:
msg: "{{ str1 | join(',') }}"
首先 map 过滤器 join(/) 到列表的项目然后 join(,) 他们
- set_fact:
str1: "{{ str|map('join', '/')|join(',') }}"
- debug: var=str1
给予
str1: 22/ABC/XYZ,555/IJK/PQR
我有一个嵌套列表 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"
谢谢
使用 wiht_list
创建一个带有列表的 var,其中包含用 /
连接的项目,然后用 ,
.
- set_fact:
str1: "{{ str1 | default([]) + [ item | join('/') ] }}"
with_list: "{{ str }}"
- debug:
msg: "{{ str1 | join(',') }}"
首先 map 过滤器 join(/) 到列表的项目然后 join(,) 他们
- set_fact:
str1: "{{ str|map('join', '/')|join(',') }}"
- debug: var=str1
给予
str1: 22/ABC/XYZ,555/IJK/PQR