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 :

remplacer des sauts de ligne par '\n'


Sujet :

Python

  1. #1
    Membre régulier
    Avatar de Miksimus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 100
    Points : 84
    Points
    84
    Par défaut remplacer des sauts de ligne par '\n'
    Bonjour,

    C'est assez bizarre...

    Quand j'essaye le programme ci-dessous tout seul, ça a l'air de fonctionner mais je l'ai inséré dans un autre programme et ça ne marche plus...

    Quelqu'un a-t-il une autre idée pour faire ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def echappe(texte):
        s = list(texte)
        for i in range(len(texte)):
            c = texte[i]
            if c == "\n":
                s[i] = "\\n"
        chaine = texte[:0].join(s)
        return chaine
    En fait je souhaite dans un texte remplacer tous les sauts de ligne par \n, cependant ici, il met bien les \n mais j'ai encore les sauts de ligne.
    (en fait je veux avoir tout le texte sur une seule ligne avec des \n)


    Merci d'avance pour votre aide...

    Bonne journée

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    Sous windows peut-être?
    Il me semble que c'est '\n\r' ou qch...
    '\n' c'est surtout pour Linux & Co.

    Mais tu peux écrire du code portable avec os.linesep
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > python
    Python 2.4.1 (#1, Apr  1 2005, 11:15:33)
    [GCC 3.3.4 (pre 3.3.5 20040809)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import os
    >>> os.linesep
    '\n'
    >>>
    EDIT
    En fait j'avais rien compris à ta question...
    Essaye ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    r'\n'.join(texte.split(os.linesep))
    Tu devrais " avoir tout le texte sur une seule ligne avec des \n "

  3. #3
    Membre régulier
    Avatar de Miksimus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 100
    Points : 84
    Points
    84
    Par défaut \r \n
    Bizarement, la première réponse dans laquelle tu n'avais pas compris ma question m'a plus servie que la seconde...

    en fait j'ai essayé la seconde solution mais ça ne marche pas...

    voilà donc le code que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def echappe (texte):
       s = list(texte)
       for i in range(len(texte)-1):
           c1 = texte[i]
           c2 = texte[i+1]
           if c1 == "\r" and c2 == "\n":
               s[i] = "\\n"
               s[i+1] = ""
       chaine = texte[:0].join(s)
       return chaine
    Effectivement je suis sous windows, et les caractère de retour à la ligne sont \r\n ce que j'ignorais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >>> os.linesep
    '\r\n'
    Ce code me renvoie donc "un texte sur une ligne avec des \n"
    Cependant je trouve ce code pas très "propre"... si quelqu'un a de la lessive pour code, qu'il n'hésite pas...

    Merci grandement Onarap !

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 121
    Points : 127
    Points
    127
    Par défaut
    Tu na qua faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte=texte.replace('\n', '\\n')
    ou si le caractere de saut de ligne est different :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte=texte.replace('\r\n', '\\r\\n')

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    Ouais
    Donc finalement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> s = "bla\nbla\nbla"
    >>> print s
    bla
    bla
    bla
    >>> s = s.replace(os.linesep, repr(os.linesep)[1:-1])
    >>> print s
    bla\nbla\nbla
    >>>
    C'est ce que tu veux ou pas?

  6. #6
    Membre régulier
    Avatar de Miksimus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 100
    Points : 84
    Points
    84
    Par défaut des solutions !!!
    Merci à tous les deux. j'avais un problème... et maintenant j'ai plusieurs solutions, c'est génial !

    Je les essayerai une à une...


    Merci beaucoup !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/02/2013, 23h26
  2. [RegEx] Remplacer les <br/> par des sauts à la ligne dans des zones de texte
    Par doncandid dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2010, 17h59
  3. Replace: remplacement des sauts de ligne
    Par zut94 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/06/2008, 17h39
  4. Réponses: 34
    Dernier message: 08/03/2007, 14h51
  5. Réponses: 16
    Dernier message: 22/03/2006, 11h11

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