IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Besoin d'aide pour remplacer un seul caractère d'une chaîne


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Par défaut Besoin d'aide pour remplacer un seul caractère d'une chaîne
    Bonjour.

    Je débute la programmation et je voudrais remplacer des caractères d'une str par d'autre. Dans mon code, il y a une str avec un mot et une autre avec autant de "." que de lettres dans le mot (c'est pour un pendu). Mais le problème c'est que la chaîne ne contient que des "." et donc la fonction replace ne marche donc pas. Y aurait-il un moyen pour remplacer uniquement les lettres correspondantes au mot à trouver?

  2. #2
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par ConanGuy Voir le message
    Je débute la programmation et je voudrais remplacer des caractères d'une str par d'autre. Dans mon code, il y a une str avec un mot et une autre avec autant de "." que de lettres dans le mot (c'est pour un pendu). Mais le problème c'est que la chaîne ne contient que des "." et donc la fonction replace ne marche donc pas. Y aurait-il un moyen pour remplacer uniquement les lettres correspondantes au mot à trouver?
    Bonjour,
    Il n'y a pas, à ma connaissance, de moyen direct.
    Mais avec une petite boucle ou une liste par intention:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> a = "coucou"
    >>> b = "......"
    >>> lettre = "y"
    >>> b = "".join([a[ind] if a[ind]==lettre else b[ind] for ind in range(len(a))])
    >>> b
    '......'
    >>> lettre = "c"
    >>> b = "".join([a[ind] if a[ind]==lettre else b[ind] for ind in range(len(a))])
    >>> b
    'c..c..'
    >>>
    (Il faut reconstruire la chaîne à chaque essai)
    Clodion

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    a = bytearray("coucou", 'utf8')
    b = bytearray("......", 'utf8')
     
    for ind, letter in enumerate(a):
        if letter == ord('o'):
            b[ind] = letter
     
    print(b)
    Il y a d'autres possibilités...

  4. #4
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 25
    Par défaut
    Ei si on créait une liste à partir de la chaine de caractères puis remplacer un caractère moyennant: L[k]="(caractère souhaité)" . Puis à la fin on reconvertit la liste en une chaine de caractères ?

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par tuxedo95 Voir le message
    Ei si on créait une liste à partir de la chaine de caractères puis remplacer un caractère moyennant: L[k]="(caractère souhaité)" . Puis à la fin on reconvertit la liste en une chaine de caractères ?
    C'est exactement ce que fait le code proposé par Clodion dans sa réponse.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/08/2012, 15h44
  2. Réponses: 11
    Dernier message: 13/12/2011, 17h41
  3. Besoin d'aide pour remplacer avec expression régulière sur plusieurs lignes
    Par MediaVistaIntel dans le forum Général Python
    Réponses: 11
    Dernier message: 01/12/2011, 14h19
  4. Remplacement de nombreux caractères dans une chaîne
    Par Jean_Peuplus dans le forum Cobol
    Réponses: 3
    Dernier message: 04/11/2008, 15h06
  5. [RegEx] caractère pour remplacer tous les caractères dans une regex
    Par sp2308 dans le forum Langage
    Réponses: 6
    Dernier message: 09/02/2008, 01h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo