Python : problème de "lecture" des csv

Fermé
baba4444 - 30 mai 2008 à 19:04
 baba4444 - 2 juin 2008 à 19:01
Bonjour,

Voila, j'ai un problème dans un petit programme python que je fais en ce moment, dans le cadre de mon mémoire de finance.

Le but est de comparer deux fichiers csv.

Le premier est de la forme :
54595;IE0008470928;ISHARES STOXX 50 ;Paris;TRACKER ;IRL; ;EUR;1;03/01/2005;11116;1;03/01/2005;10:05:01;15;05/02/2005;1;03/01/2005;0;21.33;100;2778.00
pour chaque ligne. si on compte à partir de 0, on trouve en 12e et 13e position la date et l'heure qui nous intéresse, et en 19e la montant.


Le deuxième est de la forme :
115946 ;26APR2005:00:00: ;54597 ;28.33 ;2 ;
pour chaque ligne, avec en 0e position l'heure, en 1ere la date, en 4e le montant.

Le but de mon programme est de comparer le montant du 1er fichier et le montant du 2e, en faisant la différence des deux quand les dates et heures sont proches.

Ce que je veux faire, c'est mettre les infos du deuxième dans un tableau, puis parcourir le 1er fichier ligne par ligne, et à chaque fois aller chercher LA ligne correspondante dans mon tableau.

Alors là où il y a un problème, c'est que je n'arrive même pas à lire mes fichiers.
Et le problème me semble incompréhensible. J'explique :







import os
import win32com.client
import csv

excel = win32com.client.Dispatch('Excel.Application')
workbook = excel.ActiveWorkbook
feuil1 = workbook.Worksheets('feuil1')




tableau_ordre = []
tableau_nav = []
volumes_traites = []
erreur = []


fichier1 = open('tests_ordres.csv','rb')
fichier1.readline()
fichier2 = open('54597.csv','rb')
fichier2.readline()


a = 0
b = 0

for ligne in fichier2:
a=a+1
lgs = ligne.split(';')

date_nav = lgs[1]
jour_nav = int(date_nav[0]+date_nav[1])

if date_nav[2] +date_nav[3]+date_nav[4] == 'JAN':
mois_nav = 01
if date_nav[2] +date_nav[3]+date_nav[4] == 'FEB':
mois_nav = 02
if date_nav[2] +date_nav[3]+date_nav[4] == 'MAR':
mois_nav = 03
if date_nav[2] +date_nav[3]+date_nav[4] == 'APR':
mois_nav = 04
if date_nav[2] +date_nav[3]+date_nav[4] == 'MAY':
mois_nav = 05
if date_nav[2] +date_nav[3]+date_nav[4] == 'JUN':
mois_nav = 06
annee_nav = int(date_nav[5] + date_nav[6] + date_nav[7] + date_nav[8])

date_nav = [jour_nav, mois_nav, annee_nav]


horaire_nav = lgs[0]
heure_nav = int(horaire_nav[0]+ horaire_nav[1])
minute_nav = int(horaire_nav[2] + horaire_nav[3])
seconde_nav = int(horaire_nav[4] + horaire_nav[5])
horaire_nav = [heure_nav, minute_nav, seconde_nav]

tableau_nav.append([date_nav, horaire_nav, float(lgs[3])])




Ca c'est pour le tableau résumant mon fichier 2.
Et en fait, ça ne marche pas. En essayant, Scite me dit que lgs[1] crée une erreur : IndexError: list index out of range
Donc je vérifie, et j'essaye autre chose.
Je place : print lgs[1]
avant date_nav = lgs[1]
Et là, ok ça m'affiche bien les lgs1 et ça prend 10 fois plus de temps, mais en plus la suite marche !

Et ça me fait ça pour toutes les variables. Quelqu'un a déjà rencontré ce problème ?

Merci beaucoup pour votre (future) aide !

1 réponse

up svp !
0