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 String by String


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut replace String by String
    Bonjour, j'ai fait un code qui ajoute un retour ligne après les points :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    f=open("myText1.txt","r")
    contenu=f.read()
    f.close()
    f2=open("myText2.txt","w")
    for ligne in contenu:
        ligne.replace(".",'\n')   
    f2.close()
    La première fois qu'Arthur vit Sidonie, il la trouva franchement laide. Elle lui déplut vraiment. Il n'aima pas comment elle était habillée.
    Ce qui donne :

    La première fois qu'Arthur vit Sidonie, il la trouva franchement laide.
    Elle lui déplut vraiment.
    Il n'aima pas comment elle était habillée.

    Maintenant si je souhaite créer un retour ligne uniquement pour la première phrase, j'y arrive pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ligne in contenu:
        ligne.replace("laide.",'\n')
    Pourriez-vous m'aider svp?

    Je vous en remercie d'avance.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Si tu veux faire un changement après la première ligne, pourquoi boucler sur tout le contenu et pourquoi remplacer un mot particulier (qui ne sera peut-être pas le même dans un autre fichier) ? Pourquoi ne pas traiter la première ligne en tant que premier élément de ta list "contenu" ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut
    Le saut de ligne était un exemple mal choisi peut-être. Le vrai problème c'est que le code suivant ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ligne in contenu:
        ligne.replace("laide.",'moche.')
    Ça marche uniquement pour un seul caractère à remplacer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ligne in contenu:
        ligne.replace(".",'moche.')
    ça donne "laidemoche."

    Je précise que j'utilise Python 3.6

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Salut,

    Citation Envoyé par Arsene12 Voir le message
    Le saut de ligne était un exemple mal choisi peut-être. Le vrai problème c'est que le code suivant ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ligne in contenu:
        ligne.replace("laide.",'moche.')
    Déjà vous vous foutez dedans en nommant votre variable "ligne" alors qu'à chaque itération, elle sera associée à un seul caractère. Et donc, impossible d'y trouver "laide.".
    Ensuite les chaînes de caractères sont des objets non mutables: la chaîne originale n'est pas modifiée! Et ligne.replace va retourner une nouvelle chaîne qui, si vous ne la stockez pas quelque part, sera perdue.
    Pour vous en convaincre abusez de l'instruction "print":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ligne in contenu:
        print('avant', ligne)
        ligne.replace("laide.",'moche.')
        print('après', ligne)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut
    Je vais sur cette page : https://www.tutorialspoint.com/pytho...ng_replace.htm

    J'en déduis que la solution devrait-être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    contenu.replace("laide.",'.\n')   
    f2.write(contenu)
    ça marche pas .

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut
    Veuillez me pardonner, je débute en python. Je suis parvenu à en déduire la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    contenu = contenu.replace("laide.",'.\n')   
    f2.write(contenu)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2015, 15h56
  2. Replace string par string
    Par SrK dans le forum Langage
    Réponses: 4
    Dernier message: 28/02/2008, 01h23
  3. [string] [float] string to float en sql
    Par chickenhuchette dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 17/06/2005, 11h47
  4. [String] pb fonction String[] split(String regex)
    Par Kyti dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2005, 13h06
  5. Problème de copie de string dans string
    Par kazarn dans le forum SL & STL
    Réponses: 17
    Dernier message: 15/03/2005, 18h35

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