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 :

probleme concordance dictionnaire et liste


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut probleme concordance dictionnaire et liste
    Bonjour,
    voila j'ai un petit souci que voici:

    j'ai deux dictionnaire:l'un pour les CV-**** et l'autre pour les Aster-*****

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"['C169v2-00003']": '[1, 45]', "['C169v2-04487']": '[66, 111, 155, 184, 207, 253]', "['C169v2-00001']": '[24, 54, 92, 137, 236, 276, 325]', "['C169v2-00005']": '[58, 138, 191, 222]', "['C169v2-00002']": '[44, 50, 134]', "['C169v2-00004']": '[15, 46, 102, 165]'}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"['Aster-04749']": '[83, 150, 214]', "['Aster-00003']": '[31, 116, 144, 172, 242]', "['Aster-06787']": '[79, 117, 196, 223, 264, 307, 338, 348, 387, 418, 454, 501, 566]', "['Aster-00004']": '[17, 79, 185, 226, 238, 259, 287, 338]', "['Aster-00001']": '[42, 66, 138, 147]', "['Aster-00002']": '[70, 127, 144, 199]'}
    Et j'ai un fichier contenant le couple CV-*** Aster-****
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    C169v2-00001	Aster-00001	
    C169v2-00002	Aster-00002	 
    C169v2-00003	Aster-00003	 
    C169v2-00004	Aster-00004	 
    C169v2-00005	Aster-04749	 
    C169v2-04487	Aster-06787
    je voudrais a partir de ce fcihier lire les couples les stockees, et aller dans les dictionnaires respectifs recuperer les valeurs et les ecrire pour les Aster et CV respectifs.
    Mais j'ai un souci de Key error
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    KeyError: 'C169v2-00001'
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    with open('ok.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
         		print tab[0]  # => C169v2-00002
          		print tab[1]  # => Aster-06787
    		print d1[tab[0]] # ce qui equivaut a print dic["C169v2-00001"] ==> 24, 54, 92, 137, 236, 276, 325]'
    		print d2[tab[1]] # ce qui equivaut a print dic["Aster-00001] ==> [42, 66, 138, 147]
    est ce que quelqu'un pourrait m'eclairer mon erreur et m'aider please!!!!!

    merci

  2. #2
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Bonjour,
    Les clefs de votre dictionnaire sont sous la forme
    "['C169v2-00003']"
    Tandis que dans votre fichier de lecture ce n est pas le cas vous devriez essayer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with open('ok.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
         		print tab[0]  # => C169v2-00002
          		print tab[1]  # => Aster-06787
    		print d1["["+tab[0]+"]"] # ce qui equivaut a print dic["[C169v2-00001]"] ==> 24, 54, 92, 137, 236, 276, 325]' comme dans l exemple
    		print d2["["+tab[1]+"]"] # ce qui equivaut a print dic["[Aster-00001]"] ==> [42, 66, 138, 147] comme dans l exemple
    A plus.
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut
    J'ai utilise ce que vous avez dit car j'ai pense au meme souci mais j'ai toujours la meme erreur, je pense plutot qu'il faut que je fasse une boucle dans le dictinnaire ou pas??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "essai2.py", line 115, in <module>
        print d1["["+tab[0]+"]"] 
    KeyError: '[C169v2-00001]'

  4. #4
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Re,
    Excuse moi. Petite erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with open('ok.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
         		print tab[0]  # => C169v2-00002
          		print tab[1]  # => Aster-06787
    		print d1["['"+tab[0]+"']"] # ce qui equivaut a print dic["['C169v2-00001']"] ==> 24, 54, 92, 137, 236, 276, 325]' comme dans l exemple
    		print d2["['"+tab[1]+"']"] # ce qui equivaut a print dic["'[Aster-00001']"] ==> [42, 66, 138, 147] comme dans l exemple
    Je crois que ca y est. J ' ai tout a l heure oublie les apostrophes.
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut
    Ok merci bcp!!!!! ca marche i'm happy

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut
    J'ai le meme souci mais cette fois jai un tres grand fichier qu'on va resumer a ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    C169v2-03060	Aster-04730	
    C169v2-03067	Aster-04746	
    C169v2-03066	Aster-04710	
    C169v2-03065	Aster-04711	
    C169v2-03064	Aster-05029
    apres les ASTER il y a un \n qui me pause probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    with open('ok.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
    		print tab
         		print tab[0]  # => C169v2-00002
          		print tab[1]  # => Aster-06787
    	        print d1["['"+tab[0]+"']"] # ce qui equivaut a print dic["['C169v2-00001']"] ==> 24, 54, 92, 137, 236, 276, 325]' comme dans l exemple
    		print d2["['"+tab[1]+"']"]
    car du coup j'ai une erreure du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    KeyError: "['Aster-06787\n']"
    j'ai essaye de joue comme vous avec les expressions mais je n'y arrive pas

    merci si vous avez une solution

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

    La clé est une chaîne de caractère de la forme: 'C169v2-00003'.

    Si vous récupérez "['C169v2-00003']", c'est que vous avez fait "str" sur une liste réduite à un seul élément...i.e. vous n'avez pas mis ce que vous vouliez.

    Corrigez le défaut initial plutôt que de d'essayer de gérer les dégâts plus loin.

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

  8. #8
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 305
    Par défaut
    Essayes comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    print d1[tab[0]]
    print d2[tab[1][:-1]]
    Il ne faut pas rajouter de crochets entre guillemets.
    Il est normal que la clé soit une variable.

  9. #9
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    question 1 : comment récupérez vous les dictionnaire? c'est un de vos traitement?

    question 2 : est ce que vous etes sur que vos clés des dictionnaire seront toujours présentes dans le fichier des couples?

    question 3 : quel est la finalité du traitement.

    perso, j'utiliserai setdefault, pour lire les valeurs dans mon dictionnaire ou alors aprés avoir fait une réecriture des clés des dico pour virer les [' et ']. je chercherais la clé issue du couple dans la liste des clés du dico (via Aster.key())

    Quand au \n qui peut etre présent dans une valeur récupérée du fichier des couple, je ferais diférement.
    je commencerai par virer les \n, faire un split sur les \t.
    comme ca pluis de soucis avec les \n dans les valeurs récupérées.

    Plus long comme traitement mais controlé...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut
    Bonjour, oui je fait un str au debut car pour mettre dans le dico je ne pouvais pas le faire voici mon code:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
    #! /usr/bin/python
     
     
    #coding=utf-8
     
    coco=[]
    aster=[]
     
    d1={}
    d2={}
     
     
     
    def rev(l): 
        if len(l) == 0: return [] 
        return [l[-1]] + rev(l[:-1]) 
     
     
     
    def brin(line):
     
          T=line.split('\t')[3:4]
     
          if '+' in T:
     
     
    	    coord1=line.split('\t')[7:8]
     
    	    d=[(int(j)-int(i))/3 for i, j in [i.split("..") for i in coord1[0].split(",")]]#calcul de la distance
     
    	    c = [1]
    	    for i in d:
        		c.append(c[-1]+i)
       		c.append(c[-1]+1)
    	    c.remove(c[-1])
     
          else:
     
                a=[]
    	    coord2=line.split('\t')[7:8]
     
     
    	    d= [(int(j)-int(i))/3 for i, j in [i.split("..") for i in coord2[0].split(",")]]#calcul de la distance
    	    a=rev(d)
     
    	    c=[1]
    	    for i in a:
        		c.append(c[-1]+i)
       		c.append(c[-1]+1)
    	    c.remove(c[-1])
     
     
          return c 
     
     
    with open('R_B_B_H_A_C.txt') as fic:
    	for ligne in fic:
    		chaine1 = ligne.split('\t')[:1]
    		chaine2= ligne.split('\t')[1:2]
    		coco.append(chaine1)
    		aster.append(chaine2)
     
     
     
    with open('coco_cds.txt') as fichier:
        for line in fichier:
            ch= line.split('\t')[1:2]
    	b2=[]
    	if ch in coco:
    		ch1=ch
    		r = brin(line)
     
    		for i in range(len(r)):
                     	if ( i%2 != 0): 
    				b2.append(r[i])
    		b2.remove(b2[-1])	
    		chaine = str(b2)
    		ch1=str(ch1)
    		d1[ch1] = chaine
        #print d1
    #num1 = [(ch1, chaine) for ch1, chaine in d1.iteritems()]
    #print num1
    #with open('ok.txt', 'w') as fichier:
    #   fichier.write('\n'.join('{0}\t{1}'.format(a, b) for a, b in num1))
     
    with open('atro_cds.txt') as fichier:
        for line in fichier:
            ch= line.split('\t')[1:2]
    	b1=[]
    	if ch in aster:
    		ch1=ch
    		r = brin(line)
     
    		for i in range(len(r)):
                     	if ( i%2 != 0): 
    				b1.append(r[i])
    				#print b1
    	        b1.remove(b1[-1])
    		#print b1
    		chaine = str(b1)
    		ch1=str(ch1)
    		d2[ch1] = chaine
    #'print d2
     
    print d1	
     
     
     
     
    with open('R_B_B_H_A_C.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
    		#print tab
         		print tab[0]  # => C169v2-00002
          		#print tab[1]  # => Aster-06787
    		#print d1[tab[0]]
    		#print d2[tab[1]]
     
    	        print d1["['"+tab[0]+"']"] # ce qui equivaut a print dic["['C169v2-00001']"] ==> 24, 54, 92, 137, 236, 276, 325]' comme dans l exemple
    		print d2["['"+tab[1]+"']"]
    voici le code erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     File "essai2.py", line 121, in <module>
        print d2["['"+tab[1]+"']"]
    KeyError: "['Aster-06787\n']"
    J'ai essaye d'enlever le str mais ca ne marche pas car commet puis je mettre dans le dico ensuite.

  11. #11
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Tu devrais vraiment songer a changer la maniere dont chage ton dictionnaire.
    Mais bon tu dois supprimer le "\n" dans ta chaine, au cas ou elle en contient un. Mais comme tu vois ce n est plus de la programmation, mais du "Brute force".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    with open('R_B_B_H_A_C.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
    		#print tab
         		print tab[0]  # => C169v2-00002
          		#print tab[1]  # => Aster-06787
    		#print d1[tab[0]]
    		#print d2[tab[1]]
     
    	        print d1["['"+tab[0]+"']"] # ce qui equivaut a print dic["['C169v2-00001']"] ==> 24, 54, 92, 137, 236, 276, 325]' comme dans l exemple
    		print d2["['"+tab[1].replace("\n","")+"']"] # Vu que la seconde partie contient le caractere de fin de ligne.
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut
    cest bon jai regle ce souci en modifiant le fichier d'entree.

    Mais voila un autre probleme

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
    #! /usr/bin/python
     
     
    #coding=utf-8
     
    coco=[]
    aster=[]
     
    d1={}
    d2={}
     
     
     
    def rev(l): 
        if len(l) == 0: return [] 
        return [l[-1]] + rev(l[:-1]) 
     
     
     
    def brin(line):
     
          T=line.split('\t')[3:4]
     
          if '+' in T:
     
     
    	    coord1=line.split('\t')[7:8]
     
    	    d=[(int(j)-int(i))/3 for i, j in [i.split("..") for i in coord1[0].split(",")]]#calcul de la distance
     
    	    c = [1]
    	    for i in d:
        		c.append(c[-1]+i)
       		c.append(c[-1]+1)
    	    c.remove(c[-1])
     
          else:
     
                a=[]
    	    coord2=line.split('\t')[7:8]
     
     
    	    d= [(int(j)-int(i))/3 for i, j in [i.split("..") for i in coord2[0].split(",")]]#calcul de la distance
    	    a=rev(d)
     
    	    c=[1]
    	    for i in a:
        		c.append(c[-1]+i)
       		c.append(c[-1]+1)
    	    c.remove(c[-1])
     
     
          return c 
     
     
    with open('ok.txt') as fic:
    	for ligne in fic:
    		chaine1 = ligne.split('\t')[:1]
    		chaine2= ligne.split('\t')[1:2]
     
    		coco.append(chaine1)
     
    		aster.append(chaine2)
     
     
     
     
    with open('Coccomyxa_C169_v2_ORDERED-LIST-OF-CDS') as fichier:
        for line in fichier:
            ch= line.split('\t')[1:2]
     
    	b2=[]
    	if ch in coco:
    		ch1=ch
    		r = brin(line)
     
    		for i in range(len(r)):
                     	if ( i%2 != 0): 
    				b2.append(r[i])
    		b2.remove(b2[-1])	
    		chaine = str(b2)
    		ch1=str(ch1)
    		d1[ch1] = chaine
    #print d1
    #num1 = [(ch1, chaine) for ch1, chaine in d1.iteritems()]
    #print num1
    #with open('ok.txt', 'w') as fichier:
    #   fichier.write('\n'.join('{0}\t{1}'.format(a, b) for a, b in num1))
     
    with open('Astpho1_ORDERED-LIST-OF-CDS') as fic:
        for line in fic:
            ch= line.split('\t')[1:2]
     
    	b1=[]
    	if ch in aster:
    		ch2=ch
    		r = brin(line)
     
    		for i in range(len(r)):
                     	if ( i%2 != 0): 
    				b1.append(r[i])
    				#print b1
    	        b1.remove(b1[-1])
    		#print b1
    		chaine = str(b1)
    		ch2=str(ch2)
    		d2[ch2] = chaine
    #print d2
     
     
     
     
     
     
    with open('ok.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
    		#print tab
         		#print tab[0]  # => C169v2-00002
          		#print tab[1]  # => Aster-06787
    		#print d1[tab[0]]
    		#print d2[tab[1]]
    		filout = open('essai2.txt', 'w')
    	        #print d1["['"+tab[0]+"']"] # ce qui equivaut a print dic["['C169v2-00001']"] ==> 24, 54, 92, 137, 236, 276, 325]' comme dans l exemple
    		str1= d2["['"+tab[1]+"']"]
    		print str1
    		#tab[0] + " " + d1["['"+tab[0]+"']"]
    je voudrais calculer toutes les valeurs qui sont dans str1, en effet j'ai tous les str qui ressemblent a ce format la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [100, 149, 189, 231, 275, 312, 339, 398, 440]
    cest a dire les [ chiffres, chiffres,..]
    moi je voudrais calculer en faisant une somme de tous les chiffres qui sont a linterieur pour tous mes str1, jai commence par faire un replace des [] mais jai toujours un probleme de buffer une idee de faire plus vite.

    merci

  13. #13
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    J'ai essaye d'enlever le str mais ca ne marche pas car commet puis je mettre dans le dico ensuite.
    La cause est par là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with open('R_B_B_H_A_C.txt') as fic:
    	for ligne in fic:
    		chaine1 = ligne.split('\t')[:1]
    		chaine2= ligne.split('\t')[1:2]
    		coco.append(chaine1)
    		aster.append(chaine2)
    ligne.split('\t') : construit une liste de chaines de caractères,
    ligne.split('\t')[:1] : extrait la sous-liste comprenant le premier élément
    ligne.split('\t')[1:2] : : extrait la sous-liste comprenant le 2ème élément
    Si vous avez appelé cela "chaineX", c'est sans doute parce que vous pensiez extraire la chaine de caractère en première ou deuxième position dans la liste et non la liste construite avec "la chaine de caractère en première ou deuxième position".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with open('R_B_B_H_A_C.txt') as fic:
    	for ligne in fic:
    		chaine1 = ligne.split('\t')[:1]
    		chaine2= ligne.split('\t')[1:2]
    		coco.append(chaine1)
    		aster.append(chaine2)
    Pour ce faire, il serait préférable de coder cela ainsi i.e. extraire l'élément:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with open('R_B_B_H_A_C.txt') as fic:
    	for ligne in fic:
    		chaine1 = ligne.split('\t')[0]
    		chaine2= ligne.split('\t')[1]
    		coco.append(chaine1)
    		aster.append(chaine2)
    - W
    PS: Et faire la même chose pour le reste du code.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    il y aurait il la possibilités d'avoir les fichiers txt de départ en pièces jointes?

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut
    Merci pour vos reponses mais j'ai pu me debrouiller, seulement
    j'ai un fichier qui contient ces elements la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    C169v2-04488	[24, 79, 111, 186, 233]
    C169v2-04487	[12, 58, 81, 110, 154, 199]
    C169v2-04480	[53, 110, 114, 193, 241, 296, 329, 373]
    C169v2-04481	[51, 99, 153, 183, 258, 301, 344, 409]
    C169v2-03069	[5, 23, 64, 103, 170, 227, 294]
    C169v2-03068	[44, 98, 171]
    C169v2-03061	[21, 61, 106, 149, 219, 232, 286, 323]
    C169v2-03060	[59, 144, 180]
    C169v2-03067	[8, 29, 55, 80, 117, 165, 197, 242, 292]
    C169v2-03066	[]
    C169v2-03065	[18, 69, 128, 178, 227, 277, 335, 376, 450, 502, 560]
    C169v2-03064	[18, 53, 84]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Voici mon code pour recuperer que les distances:
    #! /usr/bin/python
     
     
    #coding=utf-8
     
    with open('essai2') as fic:
    	for ligne in fic:
    		chaine1 = ligne.split('\t')[1:]
    et voici ce que j'ai en retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ['[86, 192, 261, 310, 373, 465, 550, 637]\n']
    ['[33, 52, 118, 182, 234, 264, 298, 355, 401]\n']
    ['[40, 64, 87, 144, 168, 176, 228, 287, 337, 362, 399, 459, 503, 546, 624, 727, 764, 812, 835, 894, 944, 1013, 1099, 1127, 1141, 1181, 1226, 1244, 1250, 1303]\n']
    ['[7, 38, 55, 138, 226, 308, 388, 440, 519, 570, 597, 677, 731, 790]\n']
    ['[81, 159, 232, 334, 395, 458, 522]\n']
    ['[45, 71, 99, 172]\n']
    ['[13, 35, 47, 110, 194, 215, 274, 355, 406]\n']
    un truc du genre ne faites pas attention cest juste un exemple.

    Moi ce que je veux cest faire la somme de tous les elements cest a dire ['[45, 71, 99, 172]\n'] la je dois dire quil ya 4 elements de toutes les listes, mon seul souci cest les \n mais aussi comment dire lindex de l'element

    merci

  16. #16
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Salut
    Il serait temps d'arrêter de vous débrouiller et d'essayer de travailler plus proprement:
    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
    TTT="""\
    C169v2-04488    [24, 79, 111, 186, 233]
    C169v2-04487    [12, 58, 81, 110, 154, 199]
    C169v2-04487    []
    """
    from cStringIO import StringIO
     
     
    for line in StringIO(TTT).readlines():
        num_as_str = line.rstrip().split('\t')[1][1:-1]
        print 'num_as_str: "%s"' % num_as_str
        if len (num_as_str):
            print 'somme %s = %s' % (
                num_as_str, sum(map(int, num_as_str.split(','))))
        else: print 'line vide: "%s"' % line.rstrip()
    Ca affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    num_as_str: "24, 79, 111, 186, 233"
    somme 24, 79, 111, 186, 233 = 633
    num_as_str: "12, 58, 81, 110, 154, 199"
    somme 12, 58, 81, 110, 154, 199 = 614
    num_as_str: ""
    line vide: "C169v2-04487	[]"
    Et on est content.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Problème "for" dans dictionnaire de liste
    Par Sayrus dans le forum Général Python
    Réponses: 3
    Dernier message: 15/02/2006, 16h35
  2. [FreePascal] Problème pour une simple liste chaînée
    Par piff62 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 26/11/2005, 19h25
  3. Réponses: 5
    Dernier message: 25/10/2005, 20h51
  4. Probleme avec les double Liste chainees
    Par BernardT dans le forum Langage
    Réponses: 1
    Dernier message: 12/07/2005, 17h22
  5. Probleme avec les cmd LIST ou NLST
    Par enox dans le forum Développement
    Réponses: 4
    Dernier message: 16/05/2005, 01h47

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