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 :

Lecture ligne par ligne d'un fichier txt: Problème de retour à la ligne (/n) [Python 3.X]


Sujet :

Python

  1. #1
    Membre chevronné
    Avatar de BlackoOSX
    Homme Profil pro
    Étudiant à l'INSA HdF
    Inscrit en
    Septembre 2014
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant à l'INSA HdF
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 360
    Billets dans le blog
    3
    Par défaut Lecture ligne par ligne d'un fichier txt: Problème de retour à la ligne (/n)
    Bonjour!
    Dans un de mes projets, j'ai besoin de lire dans un fichier txt (d'ailleurs de n'importe quelle extension) ligne par ligne.
    Jusqu'ici pas de problèmes j'ai trouver les docs python qui me permettaient de faire ceci.
    Là où viens le problème c'est au retour du contenu du fichier dans une liste.
    Pour vous expliquer il faut mieux que vous aillez le code sous les yeux...

    Voici le contenu du fichier txt:
    Et voici le code Python:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/python2.7#
    -*- coding: utf-8 -*-
     
     
    fichier = open("data.txt", "r")
    rep = fichier.readlines()
     
    print(rep)
     
    fichier.close()
    Et voilà ce que me renvoie la console Python:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ python test.py
    ['a\n', 'ab\n', 'abc\n', 'abcd']
    Jusqu'ici il n'y a rien d'anormal, seulement si je veux afficher item par item la liste il y a un retour à la ligne dût au "/n" et je voudrais savoir comment supprimer le "/n" de tous les items sauf du dernier puisque lui n'a pas de retour à la ligne après lui...

    J'ai essayer de cette façon mais sans succès...
    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
    #!/usr/bin/python2.7#
    -*- coding: utf-8 -*-
     
    fichier = open("data.txt", "r")
    rep = fichier.readlines(2)
     
     
    for i in range(len(rep)):
        if i != len(rep):
            t = rep[i]
            del list(t)[-2]
            print(t)
        else:
            print(rep[i])
     
     
    fichier.close()
    Merci d'avance!

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 303
    Par défaut
    Salut,

    essayes ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for i in rep:
        print(i.strip())

  3. #3
    Membre chevronné
    Avatar de BlackoOSX
    Homme Profil pro
    Étudiant à l'INSA HdF
    Inscrit en
    Septembre 2014
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant à l'INSA HdF
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 360
    Billets dans le blog
    3
    Par défaut
    Merci de votre réponse rapide!
    Mon problème est résolus mais j'aimerais savoir plus en détail comment cette commande fonction (ce qu'elle fait concrètement et dans quelles autres situations pouvons nous nous en servir)?
    Merci beaucoup!

  4. #4
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BlackoOSX Voir le message
    Mon problème est résolus mais j'aimerais savoir plus en détail comment cette commande fonction (ce qu'elle fait concrètement et dans quelles autres situations pouvons nous nous en servir)?
    Il suffit de consulter la doc.
    https://docs.python.org/3/library/st...html#str.strip

    Ou encore utiliser help dans ta console python

  5. #5
    Membre chevronné
    Avatar de BlackoOSX
    Homme Profil pro
    Étudiant à l'INSA HdF
    Inscrit en
    Septembre 2014
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant à l'INSA HdF
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 360
    Billets dans le blog
    3
    Par défaut
    D'accord merci beaucoup à vous deux!

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

    Pour découper une chaîne de caractères suivant une séquence particulière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> s = 'a*bb*ccc'
    >>> s.split('*')
    ['a', 'bb', 'ccc']
    >>>
    Le marqueur de fin de ligne étant variable suivant les systèmes, il y a une méthode adaptée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> s = 'a\nbb\nccc'
    >>> s.splitlines()
    ['a', 'bb', 'ccc']
    >>> s = 'a\r\nbb\r\nccc'
    >>> s.splitlines()
    ['a', 'bb', 'ccc']
    >>>
    Il est donc plus simple d'écrire rep = fichier.read().splitlines() plutôt qu'utiliser .readlines() et récupérer une liste de lignes que l'on va reconstruire ensuite sans les fins de lignes.

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

  7. #7
    Membre chevronné
    Avatar de BlackoOSX
    Homme Profil pro
    Étudiant à l'INSA HdF
    Inscrit en
    Septembre 2014
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant à l'INSA HdF
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 360
    Billets dans le blog
    3
    Par défaut
    Merci beaucoup wiztricks, cela me semble plus simple en effet!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2017, 15h30
  2. Réponses: 3
    Dernier message: 31/05/2010, 17h58
  3. Ajout ligne aprés N°ligne précis dans fichier txt
    Par dubinc38 dans le forum VBScript
    Réponses: 12
    Dernier message: 24/02/2009, 08h09
  4. Problème de retour à la ligne. Lecture fichier.
    Par haile dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 04/12/2008, 17h27
  5. Réponses: 3
    Dernier message: 08/05/2007, 08h43

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