Indexerror: List index out of range
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Indexerror: List index out of range



  1. #1
    invitefb4af953

    Angry Indexerror: List index out of range


    ------

    Bonjour,

    J'utilise python sous windows. J'ai un script qui est censé m'extraire des données d'un fichier txt. Sauf qu'il me met une erreur "list index out of range" pour une ligne de code qui a l'air de le perturbé à fond alors que je vois vraiment pas où est le problème.

    Voici le code (fichier txt initial en pièce jointe)
    Code:
    f2 = open("PS00028.txt","r")
    prosite_lines = f2.readlines()
    f2.close()
    
    # Get pdb id from prosite records
    prosite_id = []
    for line in prosite_lines:
       fields = line.split()
       if fields[0] == "3D":
          for ps_id in fields[:1]:
             prosite_id.append(ps_id[:4])
    
    # Output the pdb id
    fd = 'pdbid.txt'
    fd = open('pdbid.txt' , 'w')
    for pdbid in prosite_id:
       fd.write(pdbid)
       fd.close()
    et ça donne :
    Code:
    Traceback (most recent call last):
      File "C:\Python27\pdb_from_prosite.py", line 9, in <module>
        if fields[0] == "3D":
    IndexError: list index out of range
    J'ai printé la variable fields pour voir et ça me donne ce qu'il faut MAIS toujours l'erreur qui empêche du coup l'écriture du résultat dans le fichier destinataire:
    Code:
    ['3D', '1A1F;', '1A1G;', '1A1H;', '1A1I;', '1A1J;', '1A1K;', '1A1L;', '1AAY;', '1ARD;', '1ARE;', '1ARF;', '1BBO;']
    ['3D', '1BHI;', '1EJ6;', '1F2I;', '1G2D;', '1G2F;', '1JK1;', '1JK2;', '1JN7;', '1LLM;', '1NCS;', '1NJQ;', '1P47;']
    ['3D', '1P7A;', '1PAA;', '1SP1;', '1SP2;', '1SRK;', '1TF3;', '1TF6;', '1U85;', '1U86;', '1UBD;', '1UN6;', '1VA1;']
    ['3D', '1VA2;', '1VA3;', '1WIR;', '1WJP;', '1X3C;', '1X5W;', '1X6E;', '1X6F;', '1X6H;', '1XF7;', '1YUI;', '1YUJ;']
    ['3D', '1ZAA;', '1ZFD;', '1ZNF;', '1ZNM;', '1ZR9;', '2ADR;', '2COT;', '2CSE;', '2CSH;', '2CT1;', '2CTD;', '2D9H;']
    ['3D', '2DLK;', '2DLQ;', '2DMD;', '2DMI;', '2DRP;', '2EBT;', '2EE8;', '2EL4;', '2EL5;', '2EL6;', '2ELO;', '2ELR;']
    ['3D', '2ELS;', '2ELU;', '2ELV;', '2ELW;', '2ELX;', '2ELY;', '2ELZ;', '2EM0;', '2EM1;', '2EM2;', '2EM3;', '2EM4;']
    ['3D', '2EM5;', '2EM6;', '2EM7;', '2EM8;', '2EM9;', '2EMA;', '2EMB;', '2EMC;', '2EME;', '2EMF;', '2EMG;', '2EMH;']
    ['3D', '2EMI;', '2EMJ;', '2EMK;', '2EML;', '2EMM;', '2EMP;', '2EMV;', '2EMW;', '2EMX;', '2EMY;', '2EMZ;', '2EN0;']
    ['3D', '2EN1;', '2EN2;', '2EN3;', '2EN4;', '2EN6;', '2EN7;', '2EN8;', '2EN9;', '2ENA;', '2ENC;', '2ENE;', '2ENF;']
    ['3D', '2ENH;', '2ENT;', '2EOE;', '2EOF;', '2EOG;', '2EOH;', '2EOI;', '2EOJ;', '2EOK;', '2EOL;', '2EOM;', '2EON;']
    ['3D', '2EOO;', '2EOP;', '2EOQ;', '2EOR;', '2EOS;', '2EOU;', '2EOV;', '2EOW;', '2EOX;', '2EOY;', '2EOZ;', '2EP0;']
    ['3D', '2EP1;', '2EP2;', '2EP3;', '2EPA;', '2EPP;', '2EPQ;', '2EPR;', '2EPS;', '2EPT;', '2EPU;', '2EPV;', '2EPW;']
    ['3D', '2EPX;', '2EPY;', '2EPZ;', '2EQ0;', '2EQ1;', '2EQ2;', '2EQ3;', '2EQ4;', '2EQW;', '2GLI;', '2GQJ;', '2HGH;']
    ['3D', '2I13;', '2J7J;', '2JP9;', '2JPA;', '2KMK;', '2KVF;', '2KVG;', '2L1O;', '2LCE;', '2LT7;', '2LV2;', '2LVR;']
    ['3D', '2LVT;', '2LVU;', '2M0D;', '2M0E;', '2M0F;', '2PRT;', '2RPC;', '2RSH;', '2RSI;', '2RSJ;', '2WBS;', '2WBT;']
    ['3D', '2WBU;', '2YRH;', '2YRJ;', '2YRK;', '2YRM;', '2YSO;', '2YSP;', '2YSV;', '2YT9;', '2YTA;', '2YTB;', '2YTD;']
    ['3D', '2YTE;', '2YTF;', '2YTG;', '2YTH;', '2YTI;', '2YTJ;', '2YTK;', '2YTM;', '2YTN;', '2YTO;', '2YTP;', '2YTQ;']
    ['3D', '2YTR;', '2YTS;', '2YTT;', '2YU5;', '2YU8;', '3AX1;', '3IUF;', '3MJH;', '3UK3;', '3ZNF;', '4F2J;', '4F6M;']
    ['3D', '4F6N;', '4GZN;', '4IJD;', '4IS1;', '4ZNF;', '7ZNF;']
    
    Traceback (most recent call last):
      File "C:\Python27\pdb_from_prosite.py", line 9, in <module>
        if fields[0] == "3D":
    IndexError: list index out of range
    Alors là je vois pas, donc si vous pourriez m'éclairer de vos lanternes aiguisées j'en serais ravie!


    -----
    Fichiers attachés Fichiers attachés

  2. #2
    Calvert

    Re : Indexerror: List index out of range

    Re. Ca ne sert à rien de créer 2 discussion sur exactement le même problème.

    Tu as imprimé fields APRES ta condition if fields[0]=..., du coup, tu imprimes APRES l'erreur, du coup, tu n'imprimes pas la ligne qui lui pose problème.
    Je suis prêt à parier que c'est la dernière ligne avec "\\". Python l'interprète sûrement de manière différente. Je ne sais pas comment.
    Imprime fields[0] AVANT la condition, regarde ce qu'il y a dans ta variable juste avant que ça plante...

    L'art du débuggage dans ces cas-là, c'est déjà d'essayer d'identifier le problème, et ça passe par imprimer des choses jusqu'à ce que le problème devienne visible.

  3. #3
    invite8f1e9402

    Re : Indexerror: List index out of range

    Je vois 2 erreurs :
    - une dans le code qui écrit les valeurs extraites dans le fichier pbdib.txt. Je vous laisse chercher pour que vous maîtrisiez mieux les I/O.
    - et une qui répond directement à votre question. Vous avez des lignes vides à la fin de votre fichier PS00028.txt. Il est évident que la fonction split( ) n'aime pas. Mettez le point d'insertion après les // finaux et pressez la touche [Suppr] jusqu'à ce qu'il n'y ait plus rien. Sauvegardez votre fichier, le pb disparaît.

Discussions similaires

  1. Maple bis / List et Plot
    Par invite3c51923e dans le forum Mathématiques du collège et du lycée
    Réponses: 7
    Dernier message: 28/11/2010, 19h28
  2. Automatisme - program LIST
    Par invite33670690 dans le forum Électronique
    Réponses: 0
    Dernier message: 11/11/2007, 12h39
  3. Black list sur un forum
    Par invite5d44ee6f dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 20/04/2004, 06h41