Afficher une entrée depuis un csv - Python - Programmation
Marsh Posté le 16-09-2006 à 12:12:01
Tu peux stocker les "row" dans une liste, et puis après tu appelles la liste avec l'index qui va bien
Marsh Posté le 16-09-2006 à 14:41:36
Justement j' avais penser à ça, mais je ne sais pas comment faire....
J' ai testé :
Code :
|
J' obtiens :
Citation : ['Adresse1'] |
Si je mets
Code :
|
alors j' obtiens la même chose que row[1]
Marsh Posté le 16-09-2006 à 15:30:13
ahem ..... à chaque passage dans ta boucle tu écrases ta liste
essaye ça
Code :
|
Marsh Posté le 16-09-2006 à 17:54:02
1. le reader CSV est un itérateur pour ne pas avoir à charger tout le fichier en mémoire en un coup, c'est pas nécessairement une bonne idée d'essayer de passer outre
2. Pour construire une liste à partir d'un itérateur, il suffit d'envoyer cet itérateur à `list`
Donc si tu veux une liste de toutes tes lignes (une liste de listes, donc) il suffit d'appeler list(reader)
Démo:
~$ cat > test.csv |
Code :
|
Marsh Posté le 17-09-2006 à 11:18:08
Je savais bien qu'il y avait un moyen beaucoup plus compact !
Marsh Posté le 17-09-2006 à 11:36:58
L'avantage c'est surtout que ça passe par les builtins (écris en C) pour traverser l'itérateur et construire la liste, donc c'est probablement un ordre de grandeur plus rapide
Marsh Posté le 17-09-2006 à 11:43:46
en parlant de ce type d'itérateur, c'est compliqué d'en écrire un en python ? (je suis en train de voir comment je peux faire pour écrire un module pour exploiter les fichiers xbase )
Marsh Posté le 17-09-2006 à 12:20:14
Non, c'est trivial d'écrire des itérateurs en Python, soit via un "vrai" itérateur (voir `iterator types` dans la doc, et la PEP 234) depuis Python 2.2 si tu as des besoins relativement complexes, soit via les beaucoup plus simples generateurs (voir `generator` dans la doc, et la PEP 255).
Le seul inconvénient que je voie aux générateurs, c'est qu'il faut impérativement Python 2.3, les itérateurs sont dispos à partir de Python 2.2
Autant dire que ce n'est pas un gros inconvénient.
Marsh Posté le 17-09-2006 à 12:27:39
J'ai édité mon post au sujet des itérateurs
Marsh Posté le 17-09-2006 à 23:38:25
Petite question bonus
Comment fait-on pour supprimer dans le fichier, la donnée affichée ?
J'affiche Adresse2. Ensuite je veux supprimer Adresse2 de mon fichier. Je me dis "Facile ! Il suffit de faire del(datalist[1][1])". Ce qui me donne :
Code :
|
Pourtant lorsque j'ouvre mon fichier Monfichier.csv, Adresse2 est toujours présent ? En fait ça ne m'etonne qu' à moitié car contrairement à un fichier normal, à aucun moment je dis d'ouvrir le csv que ce soit en r, a ou en w ....
Marsh Posté le 17-09-2006 à 23:43:36
csv.writer, regarde la doc.
Marsh Posté le 18-09-2006 à 21:37:23
J'ai regardé la doc et même sur le net, mais je ne comprends pas trop...
Supprimer n'existe pas en tant que tel, il faut que je recopie mon fichier sauf la ligne voulue ? Mais ça me parait un peu lourd.
Marsh Posté le 18-09-2006 à 23:08:58
nicko_510 a écrit : J'ai regardé la doc et même sur le net, mais je ne comprends pas trop... |
gagné
Marsh Posté le 15-09-2006 à 21:37:02
Salut. Déjà je m' escuse si ma question vous parait un petit peu débile
Donc voilà, j' ai un fichier csv :
Nom1,Adresse1,Téléphone1,Fax1,Courriel1,Autres1
Nom2,Adresse2,Téléphone2,Fax2,Courriel2,Autres2
Nom3,Adresse3,Téléphone3,Fax3,Courriel3,Autres3
Comment faire pour afficher qu' une seule entrée ? Ex : Adresse2.
Ce que je fais moi c' est :
Mais biensûr celà affiche :
Adresse1
Adresse2
Adresse3