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 :

replace spécifique avec python [Python 2.X]


Sujet :

Python

  1. #1
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut replace spécifique avec python
    Bonjour,
    Depuis quelques temps, je souhaite remplacer une chaine comme ça : $1 par le premier élément d'une liste. Voici la chaine de départ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Bonjour $1 !
    Ca va et $2 ?
    $3 ca va !
    Voici ma liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ['tout le monde','toi','Oui']
    Comme vous avez pu remarquer il me faut un algorithme pour pouvoir remplacer $1 par liste[0], $2 par liste[1] et $3 par liste[2]
    Si vous pouvez m'aider ça serai gentil.

    Bonne journée
    Cordialement

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    tu peux utiliser les fonctionnalités de formatage, voir la doc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> texte="""Bonjour {} !
    ... Ca va et {} ?
    ... {} ca va !"""
    >>> maliste=['tout le monde','toi','Oui']
    >>> print (texte.format(*maliste))
    Bonjour tout le monde !
    Ca va et toi ?
    Oui ca va !
    >>>

  3. #3
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut
    Bonjour,
    Merci d'avoir répondu.

    J'ai été voir dans la documentation et il y a un exemple qui ressemble beaucoup au mien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    s = Template('$who likes $what')
    s.substitute(who='tim', what='kung pao')
    Je me suis dit que je pourrai faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    s = Template('$1 likes $2')
    s.substitute(1='tim', 2='kung pao')
    Mais je me suis souvenu que ma chaine et ma liste ne sont jamais les mêmes, disont que le code doit s'adpater pour chaque cas de figure. Comment je pourrai adapter tout ça ?

    Parce que j'ai un algorithme qui me remplace toutes mes sous-chaines par des "$ + numero de la sous chaine" ($1, $2, $3 ...) En gros faudrait faire l'inverse quoi. Voici mon algorithme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    parts = lignes_array.split('"')
    lst_ss_ch = parts[1::2]
    for seq in lst_ss_ch:
            x += 1
    	lignes_array[i] = lignes_array[i].replace('"' + seq + '"', '$' + str(x), 1)
    Ce bout de code se trouve dans une boucle while d'où la présence de l'index i

    Peut être avec ça, vous pourriez m'indiquer comment faire ?

    Cordialement

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Une solution possible avec replace et une liste de remplacement de longueur quelconque:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    texte = """bhbfhbgf$1ngungungu
    nguingunhg$2hnh$2jkh
    $3nhgun$1yubgbgu$0
    """     
    liste = ["AAA", "BBB", "CCC", "DDD"]
     
    for i, mot in enumerate(liste):
        texte = texte.replace("$%d" % i, liste[i])
     
    print(texte)
     
    """bhbfhbgfBBBngungungu
    nguingunhgCCChnhCCCjkh
    DDDnhgunBBByubgbguAAA
    """
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut
    Bonjour,
    Merci ça fonctionne mais encore une question. En fait si vous voulez je travaille sur une liste qui ressemble à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ['$1','Bonjour $2','$3 va','oui $4 toi','ca oui']
    et voilà la liste avec les valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ['coucou','tout le monde','ca','et']
    il faudrait parcourir ma liste principale mais comment faire pour que le for fonctionne bien avec. Pourriez vous m'aider ?

    Bonne journée
    Cordialement

  6. #6
    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 Tornade8912 Voir le message
    il faudrait parcourir ma liste principale mais comment faire pour que le for fonctionne bien avec. Pourriez vous m'aider ?
    Bonsoir,
    Peut-être quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    lst_phrase = ['$1','Bonjour $2','$3 va','oui $4 toi','ca oui'] 
    lst_remp = ['coucou','tout le monde','ca','et']
     
    lst_res = []
    index = 1
    for phr in lst_phrase:
        while ("$" + str(index)) in phr:
            phr=phr.replace("$" + str(index), lst_remp[index-1])
            index += 1
        lst_res.append(phr)
     
    print(lst_res)
    print(*lst_res, sep="\n")
    Clodion

  7. #7
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut
    Merci Clodion ta solution fonctionne ! Merci beaucoup !

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. création de base mySQL avec python
    Par preacher_man dans le forum Bibliothèques tierces
    Réponses: 7
    Dernier message: 23/06/2006, 19h38
  2. Manipuler un fichier excel avec python
    Par dipajero dans le forum Général Python
    Réponses: 4
    Dernier message: 09/02/2006, 23h14
  3. cmt se connecté a oracle pour faire une requete avec python
    Par dipajero dans le forum Bibliothèques tierces
    Réponses: 6
    Dernier message: 28/12/2005, 20h22
  4. Réponses: 2
    Dernier message: 19/12/2005, 13h15
  5. Les 128 derniers bits d'un fichier en ligne avec Python ?
    Par ecocentric dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 26/09/2005, 12h40

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