Projet

Général

Profil

Logiciel » to_excel.py

Adam-Musharraf IMTHADULLA, 01/02/2025 00:00

 
import pandas as pd
import re

def clean_csv(input_file, output_file, headers):
"""
Lit un fichier CSV, nettoie les données et applique les en-têtes fournis.
:param input_file: Chemin du fichier CSV en entrée.
:param output_file: Chemin du fichier CSV de sortie.
:param headers: Liste des titres de colonnes.
"""
with open(input_file, 'r', encoding='utf-8', errors='ignore') as file:
lines = file.readlines()
# Supprimer la ligne indésirable si elle existe
unwanted_line = "Test,Entre,Sortie,Statut,Temps (ticks)"
lines = [line for line in lines if not line.strip().startswith(unwanted_line)]
# Nettoyer et séparer les valeurs correctement
formatted_data = []
for line in lines:
line = line.strip()
line = re.sub(r'\s+', ',', line) # Remplace les espaces multiples par une virgule
values = line.split(',')
formatted_data.append(values)
# Vérifier le nombre réel de colonnes dans les données
num_columns = max(len(row) for row in formatted_data)

# Ajuster la taille des lignes pour correspondre au nombre de colonnes attendues
for i in range(len(formatted_data)):
if len(formatted_data[i]) < num_columns:
formatted_data[i] += [''] * (num_columns - len(formatted_data[i]))

# Vérifier que les en-têtes correspondent au bon nombre de colonnes
if len(headers) < num_columns:
headers += [f"Extra_{i+1}" for i in range(num_columns - len(headers))] # Ajouter des colonnes supplémentaires
print("⚠️ Ajout de colonnes supplémentaires aux en-têtes.")

elif len(headers) > num_columns:
headers = headers[:num_columns] # Tronquer si nécessaire

# Créer un DataFrame et sauvegarder
df = pd.DataFrame(formatted_data, columns=headers)
df.to_csv(output_file, index=False)
print(f"✅ Fichier nettoyé et sauvegardé sous {output_file}")

# Exemple d'utilisation
input_csv = "UART_data.csv"
output_csv = "excel_output.csv"
headers = ["Tests", "DOUT", "SUP_DCDC_PGOOD", "PS_nDIS_PWM_BIS", "PS_nDIS_PWM", "PMIC_nSS1", "DRV_HS_nFLT1", "DRV_LS_nFLT1", "PS_asc_SEL", "nRESET_LATCHED", "nOC", "PS_nASC",
"PS_nASC_bis", "DRV_ASC_EN_ISO", "nOC_LATCHED", "nOV_LATCHED", "DRV_ASC_ISO_LS", "DRV_ASC_ISO_HS", "DRV_ASC_EN_ISO_OUT", "nOC_LATCHED_OUT", "nOV_LATCHED_OUT", "DRV_ASC_ISO_LS_OUT", "DRV_ASC_ISO_HS_OUT", "Resultat","Temps"]

clean_csv(input_csv, output_csv, headers)
(8-8/8)