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 :

compter des lignes identiques


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Points : 15
    Points
    15
    Par défaut compter des lignes identiques
    Bonjour.

    Je suis débutant sur Python et j'aurai besoin d'un peu d'aide.
    Je m'explique.

    J'ai un fichier de données en .txt comme celui-ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A	 B	  C 	       D	       E	      F	           G 	        H	         I	        J
    1	450	3,50E-05	3,50E-05	7,50E-04	2,00E-05	1,00E+03	-8,00E+02	-8,00E-01	4,50E+03
    2	450	3,50E-05	3,50E-05	7,50E-04	2,00E-05	1,00E+03	-8,00E+02	-8,00E-01	3,20E+03
    4	500	5,00E-05	3,50E-05	5,00E-05	2,00E-05	1,00E+03	-3,00E+02	-3,00E-01	1,50E+03
    3	650	5,00E-05	3,50E-05	5,00E-05	2,00E-05	1,00E+03	-3,00E+02	-3,00E-01	1,50E+03
    Ce que j'aimerais c'est compter le nombre de lignes identiques à l'exception de la première et dernière colonne.
    J'aurais donc N1=2 pour B=450, N2=1 pour B=500, etc.

    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    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 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Bonsoir,

    Nous aimons python, mais si nous passons du temps sur certaines difficultés des intervenants c'est pour les faire progresser.

    Hors pour cela nous devons au moins remarquer une recherche substantielle du demandeur (ce qui n'est pas le cas ici).

    Quel code avez-vous tenté? Savez-vous lire un fichier?

    Vous devriez être plus précis, est-ce que si B=450, forcément la colonne C, D, E, etc... ont toujours la même valeur?

    Je vous propose de regarder du côté des dictionnaires pour résoudre votre problème.
    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)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Les autres colonnes ne sont pas forcément toutes égales.

    Ce que je pensais faire c'est classer les colonnes par ordre croissant et faire la différence de la ligne (i+1) avec la ligne (i) pour voir si cette différence est nulle. Je n'ai pas réussi à faire la première étape (noobisme).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tab = open('copie.txt')
    tab = tab.read()
    sorted(tab, key=itemgetter(0))
    print(tab)
    C'est certainement pas la bonne méthode.

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    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 824
    Points : 7 120
    Points
    7 120
    Par défaut
    En lisant un fichier vous pouvez récupérer une liste de listes contenant chacune de vos lignes de fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FICHIER = # path de votre fichier
    with open(FICHIER, 'r') as f:
        lines = [line.split() for line in f.readlines()]
    Après ça ne sera pas forcément évident pour vous si vous débutez je le crains

    Ensuite comment comptez-vous faire? Peut-on utiliser comme clé de dictionnaire la colonne B? Quelle est selon vous le moyen le plus facile de comparer chacune des lignes?

    Ce que je peux te proposer comme code est très simpliste et ne prend pas en compte les clés identiques (colonne B) avec des valeurs différentes

    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
    FICHIER = # path de votre fichier
    with open(FICHIER, 'r') as f:
        lines = [line.split() for line in f.readlines()]
     
    dico = {}
     
    for line in lines:
        B, liste = line[1], line[2:]
        if B not in dico:
            dico[B] = 1
        else:
            dico[B] += 1
     
     
    print(dico)
    Résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {'450': 2, '650': 1, '500': 1}
    En gros

    450 3,50E-05 3,50E-05 7,50E-04 2,00E-05 1,00E+03 -8,00E+02 -8,00E-01
    450 3,50E-05 3,50E-05 7,50E-04 2,00E-05 1,00E+03 -8,00E+02 -8,00E-01
    fonctionnera

    mais

    450 3,50E-05 3,50E-05 7,50E-04 2,00E-05 1,00E+03 -8,00E+02 -8,00E-01
    450 3,50E-05 7,50E-05 7,50E-04 1,00E-05 1,00E+03 -8,00E+02 -8,00E-01
    ne fonctionnera pas
    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)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Très bien.
    Je vous remercie.
    Je vais essayer de creuser tout ça.

Discussions similaires

  1. script pour compter des lignes de codes
    Par zg2pro dans le forum Linux
    Réponses: 6
    Dernier message: 08/12/2007, 14h14
  2. compter des lignes \n dans un texrarea
    Par gforce dans le forum Général JavaScript
    Réponses: 56
    Dernier message: 19/01/2007, 15h44
  3. Compter des lignes perl ou bash
    Par Krispy dans le forum Linux
    Réponses: 4
    Dernier message: 12/12/2006, 17h28
  4. Compter des lignes
    Par HULK dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/05/2005, 10h20
  5. [LG]Compter des Lignes...
    Par Loceka dans le forum Langage
    Réponses: 7
    Dernier message: 04/03/2004, 20h29

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