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 :

Comparer des lignes


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 14
    Par défaut Comparer des lignes
    Bonjour,

    Je parcours un fichier texte ligne par ligne en python, et j'aimerais comparer la ligne que je suis en train de lire avec celle située 10 lignes en dessous et/ou dix lignes au-dessus.
    Le fichier est trop gros pour utiliser readlines()

    Merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Tu peux ouvrir plusieurs fois un même fichier en lecture, je pense que c'est le mieux, après tu peux lire ligne par ligne avec readline()

  3. #3
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 14
    Par défaut
    Dans mon cas j'ai trouvé la solution de découper mon fichier en plusieurs parties qui sont chacune lisible avec readlines().

    Dans le cas où l'on utilise pas readlines(), est-il possible d'atteindre une ligne donnée sans passer par une boucle de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while a<ligneEnQuestion:
        fichier.readline()
        if a==ligneEnQuestion-1:
              "instructions"
        a+=1
    Merci pour votre aide !

  4. #4
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut Création d'une liste cyclique de 11 lignes
    Tu peux essayer avec ceci, il y a création d'une liste de 11 item, à chaque lecture d'une ligne il y a mémorisation + rotation + comparaison

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    f = open("ligne10.txt",'r')
    onzeLigne=[""]*11
    for i,ligne in enumerate(f):
        onzeLigne.append(ligne)
        del (onzeLigne[0])
        print onzeLigne
        if onzeLigne[0]==onzeLigne[10] : print '===> ligne',i,"=ligne",i-10
    f.close()

    Le fichier ligne10.txt étant du type
    text1
    text2
    .
    .
    text10
    text1
    text2

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Citation Envoyé par Oxygene18 Voir le message
    Dans le cas où l'on utilise pas readlines(), est-il possible d'atteindre une ligne donnée sans passer par une boucle de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while a<ligneEnQuestion:
        fichier.readline()
        if a==ligneEnQuestion-1:
              "instructions"
        a+=1
    Non, pas moyen de faire autrement, mais il y a plus lisible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ligne = ""
    for i in xrange(num): #num commence à 0
        ligne = fichier.readline()
    Traitement(ligne)

  6. #6
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Connaissez-vous readlines() ?

    La lettre 's' n'est pas une faute de frappe...

    Ceci permet de ranger dans un tableau de string tout votre fichier. Libre à vous ensuite de travailler dans ce tableau...

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Citation Envoyé par Oxygene18 Voir le message
    Le fichier est trop gros pour utiliser readlines()

Discussions similaires

  1. [2008] Comparer des lignes
    Par Taz 31 dans le forum Développement
    Réponses: 11
    Dernier message: 26/02/2015, 09h10
  2. Comparer des lignes identiques
    Par idhmida dans le forum Débutez
    Réponses: 7
    Dernier message: 31/05/2012, 15h03
  3. [XL-2007] Comparer des lignes dans le même tableau
    Par bob633 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/02/2011, 17h59
  4. Réponses: 6
    Dernier message: 24/06/2007, 01h13
  5. comment comparer des lignes ou des colonnes
    Par juldace dans le forum SQL
    Réponses: 3
    Dernier message: 29/05/2007, 12h43

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