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 :

Caractère b\ et écriture dans un fichier


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Caractère b\ et écriture dans un fichier
    Bonjour à tous,

    Après plusieurs heures de recherche en vain sur internet je me permets de poser ma question ici parce que la réponse y est peut être tout simplement évidente ^^

    Mon problème est le suivant :

    J'écris un bout de code python 2 sur raspberry pi permettant d'acquérir des valeurs transitant par une entrée série (USB ou BT) et de les enregistrer dans un fichier texte.

    Pour obtenir les valeurs issues de l'entrée série j'utilise la fonction "readline()" de la bibliothèque "serial" qui permet d'acquérir une chaîne de caractères (par exemple "blabla" ) délimitée par un retour à la ligne ("\n") -> "blabla\n"

    Je les enregistre donc dans mon fichier, sauf que je ne souhaiterais pas les mettre à la ligne. Je souhaiterais obtenir :
    "blabla blabla2"
    et j'obtiens fort logiquement avec le caratère "\n":
    "blabla
    blabla2"

    J'ai donc eu l'idée d'insérer un caractère "backspace" c'est à dire "\b"

    Sauf que python semble mal l'interpréter chez moi : j'obtiens des caractères de type "petits carrés avec marqué 00 08 dedans" à la place du backspace que ce soit dans l'IDLE (c'est un bug apparemment connu : https://bugs.python.org/issue23220 et qui ne me dérange pas) mais également dans mon fichier texte (la ça me pose davantage problème !).

    L'un d'entre vous aurait il une idée ?

    J'ai bien essayé de convertir mes caractères en unicode etc... mais en vain...

    Merci !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    \n, \b, \t,... ne sont pas des caractères "imprimables" mais des instructions de déplacement qui s'affichent plus ou moins bien suivant le contexte.

    Vu ce que vous cherchez à obtenir pourquoi ne pas remplacer \n par un espace?

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

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Salut et merci pour la réponse,

    Je n'étais donc pas du tout sur la bonne voie apparemment...

    Je ne mets pas un espace car la fonction readline() lis et renvoi tous les caractères jusqu'au fameux caractère \n... et je n'ai pas d'autre choix apparemment

    Ça me paraît surréaliste qu'il ne soit pas possible de ne pas pouvoir effacer du texte dans un fichier. Il doit bien y avoir une fonction pour ça !

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tu n'es pas obligé de remplacer par un espace.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    >>> t = "Texte avec\nsauts de\nlignes\n"
    >>> tt = t.replace('\n', ' ')
    >>> ttt = t.replace('\n', '')
    >>> tt
    'Texte avec sauts de lignes '
    >>> ttt
    'Texte avecsauts delignes'
    >>>

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bon je viens de trouver le temps de tester tout ça. Et malheureusement ça ne fonctionne pas ou du moins partiellement.

    Sur l'IDLE ça fonctionne (hormis les petits carrés).

    En revanche dans mon fichier texte ça ne fonctionne pas (j'obtiens le même résultat avec ou sans la fonction .replace).

    Chose étrange : lorsque je copie l'affichage de l'IDLE avec "les petits carrés" et que je le colle dans le champ texte de ce forum par exemple, j'obtiens la phrase avec le saut à la ligne à la place des "petits carrés". -> les "petits carrés" correspondraient ils au \n ? Comment sont ils interprétés et comment les supprimer ?

    J'avoue que j'y perds mon latin....

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bon finalement j'ai trouvé le soucis ! Si ça peut aider quelqu'un d'éviter de faire la même erreur :

    C'est cet article qui m'a mis sur la piste : https://fr.wikipedia.org/wiki/Bloc-n...s_et_avantages

    En fait je n'avais pas un '\n' à remplacer mais un '\r\n' !

    C'est pour ça que lorsque je remplaçais le `\n' je faisais la moitié du job ...

    Merci encore pour vos contributions et bonne fin de soirée !

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2005, 11h57
  2. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  3. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  4. Passer à la ligne lors de l'écriture dans un fichier
    Par hams dans le forum Assembleur
    Réponses: 4
    Dernier message: 17/04/2005, 19h25
  5. [JUnit] Junit écriture dans un fichier
    Par mikael35 dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 10/08/2004, 13h11

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