Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1583 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  liste formatée?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

liste formatée?

n°1305498
rules_taff
Posté le 14-02-2006 à 17:39:51  profilanswer
 

salut,
j'essaye de faire un tri dans un fichier CSV avant de l'injecter dans une BDD mysql.
 
Mon problème est que je ne réussis pas ) produire un fichier qui soit trié.
 
Je bloque donc au niveau de la boucle de sélection:
 
 

Code :
  1. for i in reader:
  2. d = i[7:8],i[1:2],i[4:6],i[2:4],i[8:9],i[12:14]
  3. c.writerow(d)


 
 
je pensais que c.writer(d) récupererait mon tri de facon formaté, mais cela n'est pas le cas:
 
['itemA'],['itemB'],"['itemC ', itemD']","['itemE', 'itemF']",['itemG'],['itemH']
 
Anybody à une idée?  
 
merci


Message édité par rules_taff le 14-02-2006 à 17:40:24
mood
Publicité
Posté le 14-02-2006 à 17:39:51  profilanswer
 

n°1305503
masklinn
í dag viðrar vel til loftárása
Posté le 14-02-2006 à 17:44:10  profilanswer
 

...
 
Tu te rends compte que tu crées un tuple de slices là?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1305505
rules_taff
Posté le 14-02-2006 à 17:47:56  profilanswer
 

Si cela est une erreur de faire çà, alors je ne le savais pas.

n°1305513
masklinn
í dag viðrar vel til loftárása
Posté le 14-02-2006 à 17:53:11  profilanswer
 

Ben c'est comme tu veux hein, mais la sortie est parfaitement normale pour un tuple de slices, Python fait très précisément ce que tu lui demande là [:petrus75]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1305524
rules_taff
Posté le 14-02-2006 à 17:58:07  profilanswer
 

çà j'avais bien compris. Mais je cherche à trouver un moyen d'avoir cette sortie de maniere formatée (comme je l'ai défini dansma classe dialect).
On va dire que je ne réussis pas à joindre ces tuples à l'écriture que je souhaite.
 
Si çà peut te consoler.. j'ai très peu d'heures de vol Python dans les pattes.

n°1305536
masklinn
í dag viðrar vel til loftárása
Posté le 14-02-2006 à 18:04:00  profilanswer
 

rules_taff a écrit :

Mais je cherche à trouver un moyen d'avoir cette sortie de maniere formatée (comme je l'ai défini dansma classe dialect).


Ben chais pas, c'est déjà formatté, si le format actuel ne te va pas, tu pourrais la reformatter par exemple [:mlc]  
 
J'vois pas où est le problème, t'as un format A (à la con, si je puis me permettre), tu veux un format B, ben tu transformes de l'un à l'autre [:mlc]
 
Mais comme à aucun moment tu ne dis quel est le problème et quel est le format de sortie que tu cherches, et que ma boule de crystal est chez le mécano pour la révision des 100,000  ben désolé je peux pas t'aider [:mlc]


Message édité par masklinn le 14-02-2006 à 18:05:24

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1305545
rules_taff
Posté le 14-02-2006 à 18:09:21  profilanswer
 

je veux que mon résultat soit de la forme:
 
itemA,itemB,itemC,ItemD,..
itemA2,itemB2,itemC2,ItemD2,..
etc...
 
et non avec des [], des guillemets, ni des doublequote...
 
un format csv "valide" dirons-nous.
 
Mais s'il faut se retaper la sortie je le ferais..

n°1305551
masklinn
í dag viðrar vel til loftárása
Posté le 14-02-2006 à 18:12:35  profilanswer
 

rules_taff a écrit :

je veux que mon résultat soit de la forme:
 
itemA,itemB,itemC,ItemD,..
itemA2,itemB2,itemC2,ItemD2,..
etc...
 
et non avec des [], des guillemets, ni des doublequote...
 
un format csv "valide" dirons-nous.
 
Mais s'il faut se retaper la sortie je le ferais..


Ok, alors explique moi pourquoi tu crées un putain de tuple de slices bordel [:mlc]
 
J'ai l'impression que tu ne comprends même pas ce que tu demandes à Python et que tu t'étonnes qu'il ne fasse pas ce que tu voudrais [:mlc]
 
La programmation c'est pas magique, le principe c'est pas "tiens j'vais prendre des trucs au pif tout mélanger dans un joyeux bordel et ça va peut-être marcher" bordel [:mlc]


Message édité par masklinn le 14-02-2006 à 18:13:25

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1305613
rules_taff
Posté le 14-02-2006 à 20:19:26  profilanswer
 

ok, on reprend..  
Pour faire simple, je dois récuperer des valeurs qui se trouvent sur une page web, qui se trouve dans un tableau.
J'ai réussi à le faire sans trop de problème.
J'ai mis les valeurs ainsi récupérés dans un fichier CSV. avec 13 items par lignes.
 
Ce que je souhaites à présent, c'est choisir uniquement 8 items rangés dans un ordre que je définis dans un autre fichier CSV.
 
C'est à dire:
item1,item2,item3,item4,etc...
 
avec le tri donne
 
item8,item2,item13,item5,etc...
 
 
Pour répondre à ta question donc, ce putain de tuple de slic est ce que j'ai réussi de mieux pour le moment pour remettre en ordre mes valeurs.
 
J'ai bien compris, je pense, pour l'instant, pourquoi python me donne ce type de formatage de données.
Mais je ne vois pas encore comment passer de mon fichier1.csv à fichier2.csv.
 
C'est la méthode je dirais qui me manque. J'ai pas mal cherché sur le net ce qui se rapporte à python et au CSV mais sans trouver comment faire ce joli mélange comme tu dis. Il faut bien comprendre que j'essaye de faire avec ce que j'ai compris. Mais cela ne donne pas le résultat prévu.  
 
Donc c'est sur que c'est facile de critiquer quand on connait.. et que le néophyte s'exprime mal.. Mais j'ai toujours pensé que c'était en faisant des betises qu'on apprenait. Tu ne sembles pas de cet avis. Et je ne t'en veux pas. La prog' ce n'est pas mon dada. Mais j'aimerais bien pouvoir réussir à faire ce dernier bout de code.
 
voila.

n°1305615
rules_taff
Posté le 14-02-2006 à 20:23:00  profilanswer
 

à oui.. voici un lien qui bien qu'il ne donne pas la réponse que j'ai copié, m'a fortement inspiré:
 
http://www.ebgm.jussieu.fr/~fuchs/python/list.html

mood
Publicité
Posté le 14-02-2006 à 20:23:00  profilanswer
 

n°1305661
masklinn
í dag viðrar vel til loftárása
Posté le 14-02-2006 à 22:26:31  profilanswer
 

rules_taff a écrit :

Lais j'ai toujours pensé que c'était en faisant des betises qu'on apprenait. Tu ne sembles pas de cet avis.


En l'occurence si, c'est quasiment toujours ainsi que je procède, mais je continue jusqu'à avoir résolu mon problème, et j'essaie de connaître mon outil au lieu d'y aller au pifomètre.
 
Connaître ton outil ici ça veut dire à minima avoir lu le Python Tutorial de Guido van Rossum (le BDFL et créateur de Python), A Byte of Python de Swaroop, Apprendre à programmer avec Python de Swinnen et Dive Into Python de Mark Pilgrim.
 
Maintenant pour ton problème, si on reprend à 0 tu as une liste de valeurs ordonnées (pour chaque ligne du CSV source) et tu veux en sortir une autre liste de valeurs ordonnées (pour chaque ligne du CSV destination).
 
Actuellement, tu utilises des slices. Permet moi de te dire que c'est débile, une slice est une partie de liste, une sous liste. En regroupant des slices dans un tuple (qui est en gros une liste ne pouvant pas être modifiée après sa création), tout ce que tu crées c'est une liste de listes, alors que tu veux une liste de valeur. Echec complet.
 
Donc pour commencer, extrait des valeurs de ta liste initiale e.g. d = i[7], i[1], i[4], i[5], i[2], i[3], i[8], i[12], i[13]
 
Hop, bravo, tu as un tuple de valeurs, donc une liste de valeurs, 95% du boulot est fait.
 
Maintenant tu veux formatter tes données en une liste de valeurs séparées par dés virgules.
 
Les chaînes de caractère (string) ont une méthode "join" permettant de concaténer les valeurs d'une liste en les séparant par le string originel. "".join(l) va concaténer toutes les valeurs contenues dans "l", " ".join(l) va faire de même en séparant les valeurs par un espace, ... et ",".join(l) va renvoyer toutes les valeurs de "l" concaténées dans une chaîne unique et séparées par des virgules.
 
",".join(d)
 
fini.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1305668
rules_taff
Posté le 14-02-2006 à 22:49:21  profilanswer
 

merci beaucoup de ton explication.
je vérifie çà demain.
 

n°1305866
rules_taff
Posté le 15-02-2006 à 10:51:23  profilanswer
 

bon bah.. çà ne fonctionne pas.
 
Je m'explique:
 
mon fichier CSV de base ne me permet pas de faire çà:
d = i[7], i[1], i[4], i[5], i[2], i[3], i[8], i[12], i[13]
 
j'ai l'erreur suivante:
 
IndexError: list index out of range
 
par contre, si je fais:
print row
ou  
d= i[7:8],i[1:2],i[4:6],i[2:4],i[8:9],i[12:14]
 
la j'ai mes valeurs.
 
Mon fichier CSV doit etre mal formé. C'est bien çà, j'avais une ligne vide en tout début du fichier CSV :D  
 
J'ai fais des tests avec un fichier CSV ayant cette forme et là tout focntionne:
 
1a,1b,1c,1d,1e,1f,1g
2a,2b,2c,2d,2e,2f,2g
3a,3b,3c,3d,3e,3f,3g
4a,4b,4c,4d,4e,4f,4g

Message cité 1 fois
Message édité par rules_taff le 15-02-2006 à 10:56:11
n°1305895
masklinn
í dag viðrar vel til loftárása
Posté le 15-02-2006 à 11:08:17  profilanswer
 

rules_taff a écrit :

IndexError: list index out of range


Et ça ne te viendrait bien sûr pas à l'idée de tester la longueur de ta liste ou de l'imprimer pour regarder quelle taille elle a ou comment elle est formattée [:moule_bite]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1305906
rules_taff
Posté le 15-02-2006 à 11:15:59  profilanswer
 

ba si puisque c'est comme çà que j'ai trouvé l'erreur...
 
par contre, l'écriture dans un fichier s'effectue correctement en utilisant:
 
for i in reader:
 d= i[7], i[1], i[4], i[5], i[2], i[3], i[8], i[12]
 c.writerow(d)
 
çà fonctionne!!

n°1305910
rules_taff
Posté le 15-02-2006 à 11:21:21  profilanswer
 

masklinn a écrit :

Et ça ne te viendrait bien sûr pas à l'idée de tester la longueur de ta liste ou de l'imprimer pour regarder quelle taille elle a ou comment elle est formattée [:moule_bite]


 
 
mon post a été édité.. mais j'avais oublié de dire que j'avais résolu l'erreur en vérifiant la longueur. Donc Peace and love  :o  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  liste formatée?

 

Sujets relatifs
probleme lors d'un erase() sur une listeaffichage de liste <ul></ul> sur IE et FF
[C++ débutant] Liste chaînée, suite des problemes :Denvoie résultat d'un formulaire sur liste de contacts
Liste déroulante avec onchange et conservation des données précédentesListe des language de programmation
[VC++] Listeinterroger interpréteur, liste objets créés hors du script.
[ASP3] Alimenter une table access via une liste déroulanterecherche d'index absents d'une liste de tables définie
Plus de sujets relatifs à : liste formatée?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR