diff --git a/convert.py b/convert.py index 585415c..b327447 100644 --- a/convert.py +++ b/convert.py @@ -28,10 +28,10 @@ def nettoyer_csv_texte(csv_in_path, csv_out_path): with open(csv_in_path, "r", encoding="utf-8", errors="replace") as f: lines = f.readlines() - # 1️⃣ Supprimer les 3 premières lignes quoi qu'il arrive + # 1 Supprimer les 3 premières lignes quoi qu'il arrive lines = lines[3:] - # 2️⃣ Chercher la première ligne contenant MOT_DEBUT (SOLDE) + # 2 Chercher la première ligne contenant MOT_DEBUT (SOLDE) idx_debut = None for i, line in enumerate(lines): if MOT_DEBUT.lower() in line.lower(): @@ -41,7 +41,7 @@ def nettoyer_csv_texte(csv_in_path, csv_out_path): # Supprimer tout jusqu'à et y compris cette ligne lines = lines[idx_debut + 1:] - # 3️⃣ Supprimer à partir de la ligne contenant MOT_FIN (Total des mouvements) + # 3 Supprimer à partir de la ligne contenant MOT_FIN (Total des mouvements) idx_fin = None for i, line in enumerate(lines): if MOT_FIN.lower() in line.lower(): @@ -50,19 +50,19 @@ def nettoyer_csv_texte(csv_in_path, csv_out_path): if idx_fin is not None: lines = lines[:idx_fin] - # 4️⃣ Détection du séparateur sur un échantillon + # 4 Détection du séparateur sur un échantillon sample = "".join(lines[:20]) delim = detect_delimiter(sample) - # 5️⃣ Lecture en mode tolérant avec csv.reader + # 5 Lecture en mode tolérant avec csv.reader reader = csv.reader(lines, delimiter=delim) rows = [row for row in reader] - # 6️⃣ Normaliser le nombre de colonnes (éviter erreurs si certaines lignes sont plus courtes) + # 6 Normaliser le nombre de colonnes (éviter erreurs si certaines lignes sont plus courtes) max_cols = max(len(r) for r in rows) if rows else 0 rows = [r + [""] * (max_cols - len(r)) for r in rows] - # 7️⃣ Supprimer les lignes dont le premier champ contient "date" (sauf on garde une copie pour l'entête globale) + # 7 Supprimer les lignes dont le premier champ contient "date" (sauf on garde une copie pour l'entête globale) header_line = None filtered_rows = [] for r in rows: @@ -73,7 +73,7 @@ def nettoyer_csv_texte(csv_in_path, csv_out_path): continue # ne pas inclure cette ligne dans ce fichier final filtered_rows.append(r) - # 8️⃣ Fusionner les lignes dont la première colonne est vide avec la précédente + # 8 Fusionner les lignes dont la première colonne est vide avec la précédente merged = [] for r in filtered_rows: if (r[0] or "").strip() == "" and merged: @@ -86,7 +86,7 @@ def nettoyer_csv_texte(csv_in_path, csv_out_path): else: merged.append(r) - # 9️⃣ Nettoyer les deux dernières colonnes : supprimer les points dans les nombres + # 9 Nettoyer les deux dernières colonnes : supprimer les points dans les nombres if merged: for r in merged: if len(r) >= 2: @@ -96,7 +96,7 @@ def nettoyer_csv_texte(csv_in_path, csv_out_path): # Avant-dernière colonne r[-2] = r[-2].replace(".", "") - # 🔟 Sauvegarde du fichier nettoyé + # 10 Sauvegarde du fichier nettoyé with open(csv_out_path, "w", encoding="utf-8", newline="") as f: writer = csv.writer(f, delimiter=delim) writer.writerows(merged)