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 :

lire un fichier texte ligne par ligne et récupérer des données


Sujet :

Python

  1. #1
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut lire un fichier texte ligne par ligne et récupérer des données
    Bonjour

    voilà je souahaiterai être en mesure de récupérer chaque valeur dans une variable à l'interieur d'une boucle à partir d'un fichier (cf ci dessous).

    Pour l'instant mon code permet de lire chaques lignes de mon fichier, mais je souhaiterai qu'une fois qu'il a lu la ligne, qu'il récupère les différentes valeures de cette ligne.

    Je me suis dit que je pouvais placer la ligne dans une liste, pour ensuite appeler chaque terme de cette liste, mais je doit encore être en mesure de remplier correctement celle liste.

    voila mon fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    1,   426,   425,  7508,  7509,  7573,  7574, 40478, 40479
      2,  7505,  7492,  7498,  7506, 40475, 40462, 40468, 40476
      3,  7501,  7497,  7496,  7498, 40471, 40467, 40466, 40468
      4,       3,   419,  7496,  7487,  7580,  7581, 40466, 40457
      5,    421,  7494,  7489,   422,  7578, 40464, 40459,  7577
      6,  7487,  7496,  7497,  7493, 40457, 40466, 40467, 40463
      7,  7500,  7489,  7494,  7499, 40470, 40459, 40464, 40469
      8,  7491,  7507,  7489,  7500, 40461, 40477, 40459, 40470
      9,    424,  7491,  7508,   425,  7575, 40461, 40478,  7574
     10,   415,  7495,  7505,   416,  7585, 40465, 40475,  7584
     11, 7504,  7503,  7495,  7488, 40474, 40473, 40465, 40458
    Voilà mon code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    fichier = open("MyFile.txt","r")
    for ligne in fichier:
    print(ligne)
    fichier.close()
    J'ai vue que pour manipuler des chaines des caractères il y avait le Regex, mais honnêtement j'ai du mal à comprendre. Est ce la voie à utiliser ?

    merci de votre aide.

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

    Pour mettre en forme une chaîne de caractère, rien ne remplace la console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> line = '1,   426,   425,  7508,  7509,  7573,  7574, 40478, 40479'
    >>> Z = line.split(',')
    >>> Z
    ['1', '   426', '   425', '  7508', '  7509', '  7573', '  7574', ' 40478', ' 40479']
    >>> Z = []
    >>> for e in line.split(','):
    ...     Z.append(int(e))
    ...
    >>> Z
    [1, 426, 425, 7508, 7509, 7573, 7574, 40478, 40479]
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Pour mettre en forme une chaîne de caractère, rien ne remplace la console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> line = '1,   426,   425,  7508,  7509,  7573,  7574, 40478, 40479'
    >>> Z = line.split(',')
    >>> Z
    ['1', '   426', '   425', '  7508', '  7509', '  7573', '  7574', ' 40478', ' 40479']
    >>> Z = []
    >>> for e in line.split(','):
    ...     Z.append(int(e))
    ...
    >>> Z
    [1, 426, 425, 7508, 7509, 7573, 7574, 40478, 40479]
    >>>
    - W
    Merci de ta réponse, j'étais justement entrain de bidouiller avec split et replace mais ce que tu as fait à l'air plus propre que moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ma_liste=[]
    fichier = open("MyFile.txt","r")
     
    for ligne in fichier:
        a=ligne.replace(",","")
        b=a.split()
        for i in range(len(b)):
            c=b[i]
            d=ma_liste.append(c)
    print(d)
     
     
    fichier.close()
    merci de ta réponse.

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

    Citation Envoyé par nekcorp Voir le message
    Merci de ta réponse, j'étais justement entrain de bidouiller avec split et replace mais ce que tu as fait à l'air plus propre que moi
    Tout est relatif.
    Je suis sur qu'un lecteur ne résistera pas à faire cela en une ligne.

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

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 817
    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 : 3 817
    Points : 7 110
    Points
    7 110
    Par défaut
    Je suis sur qu'un lecteur ne résistera pas à faire cela en une ligne.
    prem's

    Une solution élégante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> line = '1,   426,   425,  7508,  7509,  7573,  7574, 40478, 40479'
    >>> list(map(int, line.split(',')))
    [1, 426, 425, 7508, 7509, 7573, 7574, 40478, 40479]
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    prem's

    Une solution élégante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> line = '1,   426,   425,  7508,  7509,  7573,  7574, 40478, 40479'
    >>> list(map(int, line.split(',')))
    [1, 426, 425, 7508, 7509, 7573, 7574, 40478, 40479]
    Bonjour

    Tu n'as pas besoin d'encapsuler ton map() dans une list() car un map() est déjà une list...

    Sinon voici la mienne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> line = '1,   426,   425,  7508,  7509,  7573,  7574, 40478, 40479'
    >>> [int(x) for x in line.split(',')]          # Oui, j'aime bien les list comprehension
    [1, 426, 425, 7508, 7509, 7573, 7574, 40478, 40479]
    Citation Envoyé par nekcorp Voir le message
    J'ai vue que pour manipuler des chaines des caractères il y avait le Regex, mais honnêtement j'ai du mal à comprendre. Est ce la voie à utiliser ?
    regex c'est le gros gros outil. Il peut te faire des manipulations de chaines très complexes. Je lui ai fait remplacer une fois [(x1, y1, z1), (x2, y2, z2), etc...] par x1<tab>y1<tab>z1<return>x2<tab>y2<tab>z2<return>etc... (x, y et z étant des valeurs diverses récupérées dans une bdd) en une seule instruction.
    Donc c'est évident qu'il peut faire ce que tu veux mais comme tu as à ta disposition un paquet d'outils plus simples d'utilisation qui peuvent eux-aussi faire ce travail, autant les utiliser (surtout que pour un travail simple, un outil approprié sera plus rapide qu'un gros et lourd outil où la puissance devient un handicap)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Tu n'as pas besoin d'encapsuler ton map() dans une list() car un map() est déjà une list...
    Fred cause Python3.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 817
    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 : 3 817
    Points : 7 110
    Points
    7 110
    Par défaut
    Citation Envoyé par wiztricks
    Citation Envoyé par Sve@r
    Tu n'as pas besoin d'encapsuler ton map() dans une list() car un map() est déjà une list...
    Fred cause Python3.
    Exact ! C'est bien la langue parlé par le PO

    Bonne soirée...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  9. #9
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Merci à tous pour vos réponses. Problème résolu

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

Discussions similaires

  1. [Batch] Lire un fichier texte séparer par des tab
    Par Mut dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 16/05/2013, 16h41
  2. [AC-2003] lire une table Access en VBA ligne par ligne
    Par afifaNancy dans le forum VBA Access
    Réponses: 6
    Dernier message: 25/06/2012, 13h54
  3. Lire un fichier texte mot par mot
    Par xspray dans le forum Débuter
    Réponses: 4
    Dernier message: 01/06/2009, 17h34
  4. Comment lire un fichier texte phrase par phrase
    Par Mom's dans le forum Général Python
    Réponses: 13
    Dernier message: 12/02/2007, 15h48
  5. Lire un fichier texte ligne par ligne
    Par LeLaid dans le forum Access
    Réponses: 7
    Dernier message: 05/12/2006, 16h05

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