Bonjour,
Je débute en Jython, car utilisé comme langage de script pour une application métier, et je m'arrache les cheveux pour tester le type de 2 colonnes. Cela afin de ne pas prendre la ligne en compte s'il s'agit d'un entête (donc colonnes de type string). Tous les fichiers soumis n'ayant pas forcément d'entête...
J'utilise le bout de code suivant qui ne semble pas fonctionner :
Par ailleurs j'ai le message, non bloquant, suivant :Code:if isinstance(column[7], (int, long, float, complex)) and isinstance(column[8], (int, long, float, complex)):
IndexError : index out of range: 7
Données en entrée dans un fichier :
LegalEntity;LedgerAccount;AccountLabel;IntercoCode;TransactionCurrency;InternalReference;ExternalReference;AmountCurrency;TransactionAmount
306;A410105;Trade debtors and related accounts - Group;100;USD;CLOSE14;CLOSE14;208841.15;983785.63
306;A410105;Trade debtors and related accounts - Group;100;USD;EXV-000427;EXV-000427;0.00;-123924.51
306;A410105;Trade debtors and related accounts - Group;200;USD;EXV-000466;EXV-000427;1000;-123
...
Mon programme :
Merci d'avance pour votre éclairage!Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import shutil infilename = "c:/temp/Intercompany_306_2015010.csv" outfilename = "c:/temp/Intercompany_306_2015010.OUT.csv" infile = open(infilename, "r") outfile = open(outfilename, "w") for line in infile: column = line.split(';',9) #Si numérique alors on prend en compte if isinstance(column[7], (int, long, float, complex)) and isinstance(column[8], (int, long, float, complex)): outfile.write(column[0] + ";" + column[1] + ";" + column[2] + ";" + column[3] + ";None;" + column[5] + ";" + column[6] + ";" + column[7] + "\n") if column[8] != column[7]: outfile.write(column[0] + ";" + column[1] + ";" + column[2] + ";" + column[3] + ";" + column[4] + ";" + column[5] + ";" + column[6] + ";" + column[8]) infile.close()