Разделение запятой строки в словарь в Ansible - PullRequest
1 голос
/ 21 апреля 2020

У меня есть строка, которая выглядит следующим образом:

s = "Имя1: Значение1, Имя2: Значение2, Имя3: Значение3"

И мне нужно преобразовать ее в словарь, подобный этому :

dict = {
    "Name1": "Value1",
    "Name2": "Value2",
    "Name3": "Value3"
}

Какой модуль или фильтр я должен использовать? Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020
set_fact:
    dict: "{{ dict|default({}) | combine ( { item.split(':')[0] : item.split(':')[1] } ) }}" 
  with_items: 
    - "{{ a.split(',') }}"
0 голосов
/ 21 апреля 2020

Не очень чисто, но вы можете попробовать это:

---
- hosts: localhost
  vars:
    - s: "Name1:Value1,Name2:Value2,Name3:Value3"
    - tuples: "[{% for sub in s.split(',') %}{{sub.split(':')}},{% endfor %}]"
  tasks:
    - debug:
        msg: "{{ dict(tuples) }}"

Что дает:

TASK [debug] ************************************
ok: [localhost] => {
    "msg": {
        "Name1": "Value1",
        "Name2": "Value2",
        "Name3": "Value3"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...