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 :

Supprimer les ^M d'une chaîne


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Par défaut Supprimer les ^M d'une chaîne
    Bonjour,
    J'ai un fichier texte qui contient des des caractères spéciaux que mon éditeur vim affiche comme ^M, ce sont des retours chariot DOS semble-t-il (et sous vim, je peux en écrire en faisant ctrl+v,ctrl+m).
    Je voudrais écrire un script Python qui supprime ces caractères. Or si j'écris ce caractère spécial dans mon script python, par exemple si je fais :
    j'ai une erreur 'EOL while scanning single-quoted string'.
    Merci d'avance pour votre aide.

    PS. Le fichier texte qui contient des caractères spéciaux ^M est généré par un script PHP (à partir d'un formulaire sur le web). Donc éventuellement, je pourrais regarder du côté de ce script PHP mais j'aimerais éviter.

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    En Python:
    => '\r' = retour chariot (ascii=13)
    => '\n' = ligne suivante (ascii=10)

    S'il s'agit uniquement de supprimer les ^M (donc ici les '\r'), il suffit de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s = s.replace('\r', '')
    Mais s'il s'agit de supprimer les fins de lignes Windows ou DOS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s = s.replace('\r\n', '')
    Ou, c'est plus sûr (car même sous Windows, ça dépend de la configuration de l'éditeur de texte utilisé):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    s = s.replace('\r', '')
    s = s.replace('\n', '')
    Tyrtamos

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

    Regardez aussi du côté d'utilitaires comme dostounix ou unixtodos.
    Rappelez vous que par défaut, lorsque vous faites:
    f = open("nom.txt", "r") ou open("nom.txt", "w")
    Python considère qu'il s'agit d'un fichier "texte" et traitera les fins de lignes '\n' (unix) ou '\r\n' (dos) pour vous.
    => open(..., "rb") et open(..., "wb")

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

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Par défaut
    Merci à tous les deux, je vais tester tout ça et je reviens

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Par défaut Ça marche !!
    Merci beaucoup

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

Discussions similaires

  1. Supprimer les espaces dans une chaîne
    Par karaz_karaz dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 28/05/2008, 16h27
  2. Supprimer les accents dans une chaîne
    Par SuperChafouin dans le forum Langage
    Réponses: 4
    Dernier message: 17/12/2007, 17h28
  3. supprimer les \n d'une chaîne de caractères
    Par Empty_body dans le forum Langage
    Réponses: 3
    Dernier message: 27/11/2007, 22h12
  4. [XPATH] supprimer les espaces dans une chaîne
    Par joeyd dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 17/10/2007, 15h56
  5. supprimer les espaces dans une chaîne de caratères.
    Par Empty_body dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2006, 18h43

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