Bonjour,
Je suis débutant en Python.
J'essaye de créer une fonction qui sépare ce qu'on lui en met en argument en fonction d'une liste.
Par exemple :
Le résultat sera pour l'argument XCVICode:l = ['IV', 'IX', 'XL', 'XC', 'CD', 'CM']
Code:XC-V-I
Bonjour,
Je suis débutant en Python.
J'essaye de créer une fonction qui sépare ce qu'on lui en met en argument en fonction d'une liste.
Par exemple :
Le résultat sera pour l'argument XCVICode:l = ['IV', 'IX', 'XL', 'XC', 'CD', 'CM']
Code:XC-V-I
On peut faire comme ça:'|'.join(l) + '|.' produit la pattern regex IV|IX|XL|XC|CD|CM|., la barre signifie OR et le point désigne n'importe quel caractère. Comme une alternative (termes séparés par des OR) est testée de gauche à droite, le point est testé en dernier. (Bien que ce ne soit pas nécessaire ici, il est important pour que ça marche que les termes de l'alternative soient classés par ordre décroissant de taille.)Code:
1
2
3
4
5 >>> import re >>> l = ['IV', 'IX', 'XL', 'XC', 'CD', 'CM'] >>> s= 'XCVI' >>> '-'.join(re.findall('|'.join(l) + '|.', s)) 'XC-V-I'
Pour le fun: avec le module pypi/regex qui peut construire automatiquement une alternative à partir d'une liste:
Code:
1
2
3
4
5 >>> import regex >>> l = ['IV', 'IX', 'XL', 'XC', 'CD', 'CM'] >>> s= 'XCVI' >>> regex.sub(r'\L<l>?\K\B', '-', s, l=l) 'XC-V-I'
Merci infiniment