Bonjour,
Cela veut dire que row[2] n'existe pas. La liste row existe, mais il n'y a pas de position 2. Fait un print row afin de voir ce qu'elle contient.
A plus
Ou alors, si cela n'a rien de confidentiel mets en pièce jointe le fichier csv modifié par tes soins (zippé s'il est trop gros).
Rien ne sert de penser, il faut réfléchir avant - Pierre Dac
Oui bonne idée. Voilà le fichier zippé en .txt (pas possible de l'envoyer en csv)
Bonjour,
J'ai essayé d'importer ton fichier dans Excel (ou plutôt dans OpenCalc), pas de problème, ça marche. Peux-tu nous envoyer le source de ton programme?
A plus.
Biensûr:
Code:def importCSV(nomfichier): t=[] x=[] y=[] v=[] a=[] O=[] w=[] with open(nomfichier,"r") as fichier: reader=csv.reader(fichier,delimiter=";") for row in reader: t.append(row[0]) x.append(row[1]) y.append(row[2]) v.append(row[3]) a.append(row[4]) O.append(row[5]) w.append(row[6]) return(t,x,y,v,a,O,w) fichier="COORCSVFIN.csv"
Bonjour,
Ben moi ça marche, mais j'ai fait nomfichier="COORCSVFIN.csv" et non pas fichier="COORCSVFIN.csv" :
A plusCode:import csv def importCSV(nomfichier): t=[] x=[] y=[] v=[] a=[] O=[] w=[] with open(nomfichier,"r") as fichier: reader=csv.reader(fichier,delimiter=";") for row in reader: t.append(row[0]) x.append(row[1]) y.append(row[2]) v.append(row[3]) a.append(row[4]) O.append(row[5]) w.append(row[6]) return(t,x,y,v,a,O,w) nomfichier="COORCSVFIN.csv" a=importCSV(nomfichier) print a
Ceci dit, je ne sais pas pourquoi tu passes par un with, ça marche aussi bien avec :
Code:import csv def importCSV(nomfichier): t=[] x=[] y=[] v=[] a=[] O=[] w=[] fichier=open(nomfichier,"r") reader=csv.reader(fichier,delimiter=";") for row in reader: t.append(row[0]) x.append(row[1]) y.append(row[2]) v.append(row[3]) a.append(row[4]) O.append(row[5]) w.append(row[6]) return(t,x,y,v,a,O,w) nomfichier="COORCSVFIN.csv" a=importCSV(nomfichier) print a
Ah oui, ça marche, merci. J'ai donc réussi à transformer les virgules par des points dans mes listes qui ressemblent donc à ça:
O=['t', 's', '0', '0.033333', '0.066666', ...etc]
Parcontre en essayant de les utiliser dans une fonction j'ai ce message:
if O[i]%(2*pi)<10*pi/18 and O[i]%(2*pi)>8*pi/18:
TypeError: 'int' object is not subscriptable
>>>
Que veut dire subscriptable svp?
Bonsoir
Je ne connais pas assez Python pour savoir si ça vient de là mais dans beaucoup de cas, les valeurs entourées d'apostrophes ou de quotes sont vues comme des chaines. Je ne sais pas ce que tu as utilisé pour générer ce fichier mais les apostrophes ne servent à rien dans un fichier CSV. Tu peux les virer.
Danns le fichier d'origine .csv il n'y a pas d'apostrophe justement...
Bonjour,
Cela veut dire que tu prends la position i d'un objet qui n'admet pas l'indiçage (je ne sais pas si le mot est correct), or je ne comprends pas, tu le fais avec O, qui est une liste, donc tu as parfaitement le droit de le faire. Je ne comprends pas pourquoi tu as ce message, à moi que je n'aie pas tous les éléments.
A plus.
En effet pas dans le zip que tu as posté, qui semble parfaitement correct mais au message 17 tu dis :
et dans le 38 :Mon tableau importé est du type ['1,0001','2,0002',...]
Alors d'où cela sort-il et quel est le problème puisque le zip me semble être un csv parfaitement normal (détail : ce ne sont pas des apostrophes mais ce que les anglo-saxons appelles des quotes) ?O=['t', 's', '0', '0.033333', '0.066666', ...etc]
Rien ne sert de penser, il faut réfléchir avant - Pierre Dac
Bonjour,
Par contre, dans O[i] il n'y a pas des nombres mais des chaînes de caractères (représentant des nombres, en tout cas à partir de la position 2). Avant de faire des opérations, telles que de calculer le reste de la division par 2*pi ou autre, il faudrait convertir ces chaînes en nombres.Ah oui, ça marche, merci. J'ai donc réussi à transformer les virgules par des points dans mes listes qui ressemblent donc à ça:
O=['t', 's', '0', '0.033333', '0.066666', ...etc]
Parcontre en essayant de les utiliser dans une fonction j'ai ce message:
if O[i]%(2*pi)<10*pi/18 and O[i]%(2*pi)>8*pi/18:
TypeError: 'int' object is not subscriptable
>>>
Que veut dire subscriptable svp?
JPL: C'est bien le 38 qui est juste et bizarre qu'il me rajoute des quotes à mes nombres oui...
CM63: Oui c'est ce que je cherche à faire
Ca y est j'ai réussi, tout simplement en transformant mes listes str en float, ça marche maintenant que j'ai remplacé les virgules par des points.
Merci pour l'aide!
Du coup tout est bon, j'ai réussi tout ce que je voulais faire grâce à csv.
Pas de rapport (mais je ne pense pas utile de créer un nouveau sujet la dessus), mais maintenant que je trace des courbes avec matplotlib j'ai ce message d'erreur :
AttributeError: 'module' object has no attribute 'gca'
quand je tape ax=plt.gca(projection='3d')
et TypeError: 'module' object is not callable pour plt.axis('equal') par exemple.
Bref mon 'module object' a un problème... si quelqu'un sait de quoi il s'agit...
OK j'ai réussi tout seul. On peut archiver. Merci