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

  1. #1
    Candidat au Club
    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
    Points : 3
    Points
    3
    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 éprouvé
    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
    Points : 926
    Points
    926
    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 éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    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 : 3 823
    Points : 7 119
    Points
    7 119
    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...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  4. #4
    Membre à l'essai
    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
    Points : 18
    Points
    18
    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 sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    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