Construction de chaine avec termcolor
Résolu
ArcadePi3
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
ArcadePi3 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
ArcadePi3 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutant en python et je me retrouve face à un problème de construction de chaines. En effet j'utilise "termcolor" pour mettre des caractères en couleur dans ma console. Ce que je veux faire est remplacer un caractère en couleur dans une chaine par un autre qui n'est pas en couleur.
Voici mon code :

Lorsque j'appelle ma fonction en mettant le paramètre "n_ieme" à 1 j'obtiens bien ceci :

Mais lorsque je veux changer celui de droite en mettant "n_ieme" à 2 j'obtiens ça :

Si quelqu'un pouvait m'éclairer sur comment remplacer l'oeil de droite par "o" sans toucher à celui de gauche.
Merci d'avance
Je suis débutant en python et je me retrouve face à un problème de construction de chaines. En effet j'utilise "termcolor" pour mettre des caractères en couleur dans ma console. Ce que je veux faire est remplacer un caractère en couleur dans une chaine par un autre qui n'est pas en couleur.
Voici mon code :
Lorsque j'appelle ma fonction en mettant le paramètre "n_ieme" à 1 j'obtiens bien ceci :
Mais lorsque je veux changer celui de droite en mettant "n_ieme" à 2 j'obtiens ça :
Si quelqu'un pouvait m'éclairer sur comment remplacer l'oeil de droite par "o" sans toucher à celui de gauche.
Merci d'avance
A voir également:
- Construction de chaine avec termcolor
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Chaine radio - Télécharger - Médias et Actualité
- Simulateur de construction 14 - Télécharger - Simulation
- Chaine musique bouygues - Accueil - Guide TV et vidéo
2 réponses
Bonjour,
Pas vraiment besoin d'utiliser str.find alors qu'un simple parcours des caractères de la chaine suffit.
Si a_remplacer peut être une chaine et non un seul caractère, une petite adaptation permet de le faire.
PS: La prochaine fois poste du code plutôt que des images, entre balises codes du forum.
Pas vraiment besoin d'utiliser str.find alors qu'un simple parcours des caractères de la chaine suffit.
chaine = ' O.O ' a_remplacer = 'O' remplacement = '*' enieme = 0 pos = -1 for i, car in enumerate(chaine): if car == a_remplacer: pos += 1 if pos == enieme: chaine = chaine[:i] + remplacement + chaine[i+1:] break print(chaine)
Si a_remplacer peut être une chaine et non un seul caractère, une petite adaptation permet de le faire.
chaine = ' OO.OO ' a_remplacer = 'OO' remplacement = '*' enieme = 1 pos = -1 lar = len(a_remplacer) for i in range(len(chaine) - lar): if chaine[i:i + lar] == a_remplacer: pos += 1 if pos == enieme: chaine = chaine[:i] + remplacement + chaine[i+lar:] break print(chaine)
PS: La prochaine fois poste du code plutôt que des images, entre balises codes du forum.
Merci de ta réponse trifou,
J'ai essayé d'utilisé ta méthode et en effet elle fonctionne, je ne sais pas si c'est à cause de l'encodage autour du caractère en couleur mais lorsque j'essaye ce code :
La chaine n'a pas été modifiée, est-ce qu'il y a quelque chose que je fais mal ?
J'ai essayé d'utilisé ta méthode et en effet elle fonctionne, je ne sais pas si c'est à cause de l'encodage autour du caractère en couleur mais lorsque j'essaye ce code :
from termcolor import colored oeil_bleu = colored("*","blue") chaine = " ({0}.{1}) ".format(oeil_bleu, oeil_bleu) a_remplacer = oeil_bleu remplacement = 'o' enieme = 0 print(chaine) pos = -1 for i, car in enumerate(chaine): if car == a_remplacer: pos += 1 if pos == enieme: chaine = chaine[:i] + remplacement + chaine[i+1:] break print(chaine)
La chaine n'a pas été modifiée, est-ce qu'il y a quelque chose que je fais mal ?