web-dev-qa-db-fra.com

Chaîne divisée ansile sur le dos du dos

Je passe une liste des dirdits dans un jeu de jeu comme suit:

dirs=['Web\this','Web\that','Web']

Cela fonctionne bien lorsque je fais des tâches sur ces répertoires (Win_Shell, appelant un processus de construction), mais plus tard, je dois copier les fichiers et le "\ 'ne fonctionne pas lorsqu'il est utilisé dans le cadre d'un nom de fichier. Je suis intéressé à utiliser ce qui suit, donc je vais obtenir le nom du module pour la plupart des constructions et "Web" pour celui qui se trouve dans le dossier racine:

dirs[1].split('\\')[-1]

J'espérais que cela reviendrait "ça", "ça" et "web", respectivement.

Mais je ne trouve aucune combinaison de slashes ou de la magie de Regex pour diviser mes cordes. J'ai trouvé environ 5 questions/réponses à Stackexchange qui sont proches, mais aucun d'entre eux ne semble le faire.

J'ai aussi essayé cela avec des variations de

"{{ dirs[1] | regex_replace('\\','-') }}"
4
Wolske

Il est possible d'éviter la citation et d'échapper à l'alchimie et de déclarer une variable avec le séparateur. Utiliser style unique ; Backslash "\" peut être utilisé librement. Par exemple, le jeu ci-dessous

  vars:
    separator: '\'
    dirs: ['Web\this','Web\that','Web']
  tasks:
    - debug:
        msg: "{{ dirs[1].split(separator)[-1] }}"

donne

"msg": "that"
2
Vladimir Botka