如何删除ansible-template中行尾的逗号?
How to remove the comma at the end of the line in ansible-template?
你能告诉我如何去掉行尾的逗号吗?
最终输出:
{name: "name1", 我的国家 = "region1a", 我的国家 = "region1b"},
{name: "name2", 我的国家 = "region2a", 我的国家 = "region2b"},
您只需删除第二行末尾的一个(突出显示的)逗号即可。
输出是这样生成的
{% for country in AllСountry %}
{name: "{{ country }}",{% for count in lookup('vars', country) %} My country = "{{ count }}",{% if loop.last %} My country = "{{ count }}"{% endif %}{% endfor %}},
{% endfor %}
因此,我们需要这个输出
{name: "name1", My country = "region1a", My country = "region1b"},
{name: "name2", My country = "region2a", My country = "region2b"}
您可以为此使用 loop.last
,因此在条件测试中用逗号括起您是否在循环最后一项。
您的模板将最终成为:
{% for country in AllСountry %}
{name: "{{ country }}",{% for count in lookup('vars', country) %} My country = "{{ count }}",{% if loop.last %} My country = "{{ count }}"{% endif %}{% endfor %}}{% if not loop.last %},{% endif %}
{% endfor %}
这么说,,我觉得你是在为自己把事情搞复杂,你到底想达到什么目的?您要构建 JSON 吗? (在这种情况下,请注意 My country = "region2a"
无效)。
如果您确实想构建一个数据结构,那么您应该创建代表这些的列表和字典,然后使用简单的现有过滤器,例如 to_json
, to_yaml
,等等。
否则,这一点仍然适用:如果你想创建一个逗号分隔的字符串列表,在 Ansible 中创建一个字符串列表,然后 join
它们。
例如:
- debug:
msg: "{{ some_list | join(', ') }}"
vars:
some_list:
- foo
- bar
- baz
会给你
foo, bar, baz
你能告诉我如何去掉行尾的逗号吗?
最终输出:
{name: "name1", 我的国家 = "region1a", 我的国家 = "region1b"},
{name: "name2", 我的国家 = "region2a", 我的国家 = "region2b"},
您只需删除第二行末尾的一个(突出显示的)逗号即可。 输出是这样生成的
{% for country in AllСountry %}
{name: "{{ country }}",{% for count in lookup('vars', country) %} My country = "{{ count }}",{% if loop.last %} My country = "{{ count }}"{% endif %}{% endfor %}},
{% endfor %}
因此,我们需要这个输出
{name: "name1", My country = "region1a", My country = "region1b"},
{name: "name2", My country = "region2a", My country = "region2b"}
您可以为此使用 loop.last
,因此在条件测试中用逗号括起您是否在循环最后一项。
您的模板将最终成为:
{% for country in AllСountry %}
{name: "{{ country }}",{% for count in lookup('vars', country) %} My country = "{{ count }}",{% if loop.last %} My country = "{{ count }}"{% endif %}{% endfor %}}{% if not loop.last %},{% endif %}
{% endfor %}
这么说,My country = "region2a"
无效)。
如果您确实想构建一个数据结构,那么您应该创建代表这些的列表和字典,然后使用简单的现有过滤器,例如 to_json
, to_yaml
,等等。
否则,这一点仍然适用:如果你想创建一个逗号分隔的字符串列表,在 Ansible 中创建一个字符串列表,然后 join
它们。
例如:
- debug:
msg: "{{ some_list | join(', ') }}"
vars:
some_list:
- foo
- bar
- baz
会给你
foo, bar, baz