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 :

Remplacement caractère de début de ligne


Sujet :

Python

  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 Remplacement caractère de début de ligne
    Bonjour,

    J'ai fais ce code qui exécute un rechercher/remplacer tout simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import pickle
     
    f=open("Texte.txt","r",encoding="utf-8-sig")
    contenu=f.read()
     
    contenu = contenu.replace("caractères1", "caractères2") # on remplace les mauvaises apostrophes
     
    f.close()
     
    f5 = open("Texte2.txt", "w", encoding="utf-8-sig")
     
    f5.write(contenu)
    f5.close()
    Pourriez-vous me dire comment faire pour ne remplacer que les caractères de début de ligne, svp?
    Merci d'avance pour votre aide.
    Arsène

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 193
    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 193

  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
    Citation Envoyé par fred1599 Voir le message
    Faire le remplacement ligne par ligne, je sais faire, sans même utiliser readlines :

    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
    16
    17
    import pickle
     
    f = open('Texte.txt', 'r',encoding="utf-8-sig")
     
    f1=open("Texte2.txt","w",encoding="utf-8-sig")
    contenu=""
     
    for line in f:
     
        lineM = line
        lineM = lineM.replace("*",'$')
        contenu=contenu + lineM
     
    f1.write(contenu)
    f1.close()
     
    f.close()
    Ce que je veux, dans ce code-là par exemple, c'est remplacer uniquement l'astérisque du début de ligne.

    Avec le regex, y'a le symbole ^ qui permet de sélectionner le début de ligne. J'aimerais savoir comment cela se traduit en python.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 193
    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 193
    Par défaut
    J'ai bien compris,

    Seulement, vous ne prenez pas la peine de lire les documentations utiles afin de répondre à votre problématique.

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

    Citation Envoyé par Arsene12 Voir le message
    Pourriez-vous me dire comment faire pour ne remplacer que les caractères de début de ligne, svp?
    Pour qu'il y ait un début de ligne, il faut déjà traiter le fichier comme une suite de lignes soit en le lisant ligne à ligne soit en utilisant une expression régulière qui itère sur...

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

  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
    Citation Envoyé par fred1599 Voir le message
    J'ai bien compris,

    Seulement, vous ne prenez pas la peine de lire les documentations utiles afin de répondre à votre problématique.
    Je crois qu'il faut utiliser

    et faire :


  7. #7
    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 pense qu'avec ce code je vais pouvoir y arriver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import pickle
    import re
     
    f=open("Texte.txt","r",encoding="utf-8-sig")
    contenu=f.read()
    contenu = re.sub('\*', "\$$$$$$", contenu)
     
    f.close()
     
    f5 = open("Texte2.txt", "w", encoding="utf-8-sig")
     
    f5.write(contenu)
    f5.close()

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    re.sub('^\*', "\$$$$$$", contenu)
    , ça a pas marché.

  8. #8
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import re
     
    f=open("Texte.txt","r",encoding="utf-8-sig")
    contenu=f.read()
     
    print (re.search("^*", contenu, re.MULTILINE))
     
    f.close()
     
    f5 = open("Texte2.txt", "w", encoding="utf-8-sig")
     
    f5.write(contenu)
    f5.close()
    Avec ce code, le print me donne le bon résultat. Mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    re.sub("^*", "$$$", contenu, re.MULTILINE)
    ne marche pas

  9. #9
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 193
    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 193
    Par défaut
    Voici un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    s = "Ma souris déconne"
     
    words = s.split() # ['Ma', 'souris', 'déconne']
    first_word = words[0] # Ma
     
     
    chars = list(first_word) # ['M', 'a']
    chars[0] = 'T' # chars vaut ['T', 'a']
     
     
    words[0] = ''.join(chars) # Ta
     
     
    print(' '.join(words)) # Ta souris déconne
    startswith quand à lui détecte si le mot commence par un caractère spécifique, voir la doc déjà donnée en lien plus haut.

  10. #10
    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 voudrais utiliser le regex avec ^

    Le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print (re.search("^mesCaractères", contenu, re.MULTILINE))
    fonctionne. Je pense être sur la bonne voie.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    re.sub("^mesCaractères", "AND", contenu, re.MULTILINE)
    ne remplace que le début de la première ligne si elle commence par "mesCaractères".

  11. #11
    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
    J'ai trouvé la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    import re
     
    f=open("Texte.txt","r",encoding="utf-8-sig")
    contenu=f.read()
     
    re.sub(r"^mesCaractères", "newCaractères", contenu, flags=re.M)
     
    f.close()
     
    f5 = open("Texte2.txt", "w", encoding="utf-8-sig")
     
    f5.write(contenu)
    f5.close()

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par Arsene12 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    re.sub("^mesCaractères", "AND", contenu, re.MULTILINE)
    ne remplace que le début de la première ligne si elle commence par "mesCaractères".
    Parce que çà doit s'écrire: re.sub(..., contenu, flags=re.MULTILINE) pour respecter les autres arguments par défaut.

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

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

Discussions similaires

  1. Ajouter un caractère en début de ligne dans un fichier
    Par morpheusmg dans le forum Débuter
    Réponses: 10
    Dernier message: 31/05/2011, 23h08
  2. [RegEx] Ajouter un caractère à chaque début de ligne
    Par supertino7 dans le forum Langage
    Réponses: 7
    Dernier message: 02/10/2009, 20h12
  3. Remplacer caractère de fin de ligne suivi d'une accolade
    Par Olistan dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 07/05/2008, 17h15
  4. Insérer un caractère à chaque début de ligne
    Par xfree dans le forum Linux
    Réponses: 2
    Dernier message: 25/07/2007, 15h04
  5. [VBA-W]Insérer caractère en début de ligne.
    Par brandtance dans le forum VBA Word
    Réponses: 3
    Dernier message: 15/01/2007, 22h30

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