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

  FORUM HardWare.fr
  Programmation
  Python

  Afficher une entrée depuis un csv

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher une entrée depuis un csv

n°1443280
nicko_510
Posté le 15-09-2006 à 21:37:02  profilanswer
 

Salut. Déjà je m' escuse si ma question vous parait un petit peu débile  :jap:  
Donc voilà, j' ai un fichier csv :  

Citation :

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 :  

Code :
  1. reader = csv.reader(file("Monfichier.csv" ))
  2. for row in reader:
  3. print row[1]


Mais biensûr celà affiche :

Citation :

Adresse1
Adresse2
Adresse3

mood
Publicité
Posté le 15-09-2006 à 21:37:02  profilanswer
 

n°1443359
Monsieur S​eb
Posté le 16-09-2006 à 12:12:01  profilanswer
 

Tu peux stocker les "row" dans une liste, et puis après tu appelles la liste avec l'index qui va bien

n°1443392
nicko_510
Posté le 16-09-2006 à 14:41:36  profilanswer
 

Justement j' avais penser à ça, mais je ne sais pas comment faire....
J' ai testé :

Code :
  1. reader = csv.reader(file("Monfichier.csv" ))
  2. for row in reader:
  3.     li = []
  4. li.append(row[1])
  5. print li


J' obtiens :

Citation :

['Adresse1']
['Adresse2']
['Adresse3']


 
Si je mets

Code :
  1. print li[0]

alors j' obtiens la même chose que row[1]

n°1443401
Monsieur S​eb
Posté le 16-09-2006 à 15:30:13  profilanswer
 

ahem ..... à chaque passage dans ta boucle tu écrases ta liste
 
essaye ça
 

Code :
  1. reader = csv.reader(file("Monfichier.csv" ))
  2. li = []
  3. for row in reader:
  4.     li.append(row)
  5. print li[0] # pour voir la liste 0
  6. print li[0][1] # pour voir un élément de la liste


n°1443439
masklinn
í dag viðrar vel til loftárása
Posté le 16-09-2006 à 17:54:02  profilanswer
 

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
Nom1,Adresse1,Téléphone1,Fax1,Courriel1,Autres1
Nom2,Adresse2,Téléphone2,Fax2,Courriel2,Autres2
Nom3,Adresse3,Téléphone3,Fax3,Courriel3,Autres3
 
~$ python
Python 2.4.3 (#2, Apr 27 2006, 14:43:58)
[GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.


Code :
  1. >>> import csv
  2. >>> reader = csv.reader(file("test.csv" ))
  3. >>> datalist = list(reader)
  4. >>> datalist
  5. [['Nom1', 'Adresse1', 'T\xc3\xa9l\xc3\xa9phone1', 'Fax1', 'Courriel1', 'Autres1' ], ['Nom2', 'Adresse2', 'T\xc3\xa9l\xc3\xa9phone2', 'Fax2', 'Courriel2', 'Autres 2'], ['Nom3', 'Adresse3', 'T\xc3\xa9l\xc3\xa9phone3', 'Fax3', 'Courriel3', 'Autr es3']]
  6. >>> datalist[1]
  7. ['Nom2', 'Adresse2', 'T\xc3\xa9l\xc3\xa9phone2', 'Fax2', 'Courriel2', 'Autres2']
  8. >>> datalist[1][1]
  9. 'Adresse2'
  10. >>>


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1443557
Monsieur S​eb
Posté le 17-09-2006 à 11:18:08  profilanswer
 

Je savais bien qu'il y avait un moyen beaucoup plus compact !  :whistle:

n°1443560
masklinn
í dag viðrar vel til loftárása
Posté le 17-09-2006 à 11:36:58  profilanswer
 

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 ;)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1443562
ory
Posté le 17-09-2006 à 11:43:46  profilanswer
 

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 )

n°1443572
masklinn
í dag viðrar vel til loftárása
Posté le 17-09-2006 à 12:20:14  profilanswer
 

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.


Message édité par masklinn le 17-09-2006 à 12:27:02

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1443574
ory
Posté le 17-09-2006 à 12:25:56  profilanswer
 

je te remercie

mood
Publicité
Posté le 17-09-2006 à 12:25:56  profilanswer
 

n°1443575
masklinn
í dag viðrar vel til loftárása
Posté le 17-09-2006 à 12:27:39  profilanswer
 

J'ai édité mon post au sujet des itérateurs :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1443756
nicko_510
Posté le 17-09-2006 à 20:45:38  profilanswer
 

Merci beaucoup pour vos réponses. Ca marche nickel ;-)

n°1443816
nicko_510
Posté le 17-09-2006 à 23:38:25  profilanswer
 

Petite question bonus  :whistle:  
 
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 :
  1. >>>del(datalist[1][1])
  2. >>>print dataliste[1]
  3. ['Nom2', 'T\xc3\xa9l\xc3\xa9phone2', 'Fax2', 'Courriel2', 'Autres2']


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 ....

n°1443817
masklinn
í dag viðrar vel til loftárása
Posté le 17-09-2006 à 23:43:36  profilanswer
 

csv.writer, regarde la doc.


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

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.

n°1444433
masklinn
í dag viðrar vel til loftárása
Posté le 18-09-2006 à 23:08:58  profilanswer
 

nicko_510 a écrit :

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 ?


gagné


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

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

  Afficher une entrée depuis un csv

 

Sujets relatifs
[résolu]Argument en entréeAfficher et modifier un fichier XML en VBScript
JSP afficher bouton (Filter)Afficher le contenu d'un dossier...
Afficher une chaine de caractere au boot [VBA-E] Fonction rechercher et afficher le résultat dans l'UF
[RESOLU] Afficher popup, variable php[ASP.NET2] Afficher une seule entrée de BDD
afficher la derniere entrée peu importe la table ?!Afficher les dernières entrée d'une table ...
Plus de sujets relatifs à : Afficher une entrée depuis un csv


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