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 :
if isinstance(column[7], (int, long, float, complex)) and isinstance(column[8], (int, long, float, complex)):
Par ailleurs j'ai le message, non bloquant, suivant :
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 :
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() |
Merci d'avance pour votre éclairage!
Partager