def decomposer(chaine, separateur) :
    '''Fonction qui décompose la chaine et créant un tableau contenant les valeurs
 
    :: chaine (str) :: la chaîne de caractères à décomposer
    :: separateur (str) :: le caractère de séparation
    :: return (list) :: un tableau contenant les différents éléments
    :: exemple ::
    >>> decomposer('1,voiture,sport,rouge', ',')
    ['1', 'voiture', 'sport', 'rouge']
 
    '''
    chaine = chaine.replace('\n', '')  # On supprime le passage à la ligne
    chaine = chaine.replace('\r', '')  # On supprime le retour chariot
    tableau = chaine.split(separateur) # On crée un tableau à partir de la chaine
    return tableau
     
def creer(entree, attributs) :
    '''Renvoie un dictionnaire à partir de entree avec les clés fournies dans attributs
 
    :: param entree(list) :: un tableau de X éléments
    :: param attributs(list) :: un tableau de X éléments également
    :: return (dict) :: le dictionnaire voulu
    :: exemple ::
    >>> creer([0, 'voiture', 'sport', 'rouge'], ['id', 'type', 'utilisation', 'couleur'])
    {'id': 0, 'type': 'voiture', 'utilisation': 'sport', 'couleur': 'rouge'}
 
    '''
    reponse = {}
    if len(entree) == len(attributs) :
        for index in range(len(entree)) :
            reponse[attributs[index]] = entree[index]
    return reponse
 
def creer_collection(nom_fichier) :
    '''Fonction qui renvoie un tableau de dictionnaire à partir d'un fichier CSV
 
    :: param nom_fichier(str) :: le nom du fichier CSV correct à traiter
    :: return (list) :: le tableau de dictionnaires
    '''
    # 1 - On crée une tableau vide
    laCollec = []
 
    # 2 - On ouvre le fichier en lecture
    monFichier = open(nom_fichier, 'r', encoding='utf-8')
 
    # 3 - On lit la première ligne pour créer le tableau des attributs
    entete = monFichier.readline()         # entete est un simple string qui finit par \n
    attributs = decomposer(entete, ',')   # création d'un tableau contenant les attributs
 
    # 4 - On lit la suite du fichier ligne par ligne
    for ligne in monFichier :
        valeurs = decomposer(ligne, ',')             # tableau contenant les valeurs
        nouveau = creer(valeurs, attributs)   # dictionnaire clé-valeur
        laCollec.append(nouveau)              # rajout à la collection
 
    # 5 - On ferme le fichier
    monFichier.close()    # On ferme le fichier 
 
    # 6 - On renvoie la collection
    return laCollec
