Fusion de tables par concaténation

"""
    Spécialité NSI - Première - Traitement de données en table

    FUSION DE DEUX TABLES PAR CONCATENATION
"""

# ETAPE 1 - ENTREE DE DONNEES
# >>> Importation de données à partir de fichiers 'csv'

# R : ressource (flux)
# iC1 et iC2 : intitulés de colonnes (= descripteur ou attributs) | listes
# T1 et T2 : tables | liste de listes
R = open("table_couleurs_1a.csv",mode="r",encoding="UTF-8")
iC1 = R.readline()
T1 = R.readlines()
R.close()

R = open("table_couleurs_1b.csv",mode="r",encoding="UTF-8")
iC2 = R.readline()
T2 = R.readlines()
R.close()

# >>> Mise en forme des données importées
# Suppression des caractères LF (fin de ligne)
iC1 = iC1.replace("\n","")
iC2 = iC2.replace("\n","")
# Désérialisation : construction d'une liste à partir d'une chaîne de caractères
iC1 = iC1.split(";")
iC2 = iC2.split(";")

#  >>> Modification de l'ordre des descripteurs de iC2 pour qu'ils coïncident
#      avec ceux de iC1
iC2[0],iC2[2] = iC2[2],iC2[0]
iC2[1],iC2[2] = iC2[2],iC2[1]

nE1 = len(T1)
for index in range(nE1):
    E = T1[index]
    # Suppression des caractères LF (fin de ligne)
    E = E.replace("\n","")
    # Désérialisation : construction d'une liste à partir d'une chaîne de caractères
    E = E.split(";")
    T1[index] = E

nE2 = len(T2)
for index in range(nE2):
    E = T2[index]
    # Suppression des caractères LF (fin de ligne)
    E = E.replace("\n","")
    # Désérialisation : construction d'une liste à partir d'une chaîne de caractères
    E = E.split(";")
    T2[index] = E

#  >>> Modification de l'ordre des valeurs de T2 pour qu'elles coïncident
#      avec celles de T1
for index in range(nE2):
    T2[index][0],T2[index][2] = T2[index][2],T2[index][0]
    T2[index][1],T2[index][2] = T2[index][2],T2[index][1]

# ETAPE 2 - TRAITEMENT DE DONNEES
# >>> Fusion des tables T1 et T2
# La liste des intitulés de colonnes est ajoutées avant les enregistrements
Tf = [iC1] + T1 + T2

# ETAPE 3 - SORTIE DE DONNEES
# >>> Sauvegarde de la table fusionnée dans un fichier 'csv'
nTf = len(Tf)

# Sérialisation des données : construction d'un chaîne de caractères à partir
# d'une liste de listes
for index in range(nTf):
    E = Tf[index]
    E = ";".join(E)
    Tf[index] = E

Tf = chr(10).join(Tf)

# Ecriture des données dans un fichier
R = open("table_couleurs_1f.csv", mode="w", encoding="UTF-8")
nCar = R.write(Tf) # nCar : nombre de caractères écrits
R.close()

Téléchargement d’un fichier : programme écrit en langage Python

Auto-évaluation

Évaluez votre degré de réussite. Comparez votre réponse avec la proposition ci-dessus.

1 – Indiquez la durée mise pour réaliser le travail demandé :
Moins de 15 minutes
Entre 15 minutes et 30 minutes
Plus de 30 minutes

2 – Indiquez les conditions de réalisation :
Sans aide (documentation, tutoriel, forum…)
Avec aide :
>>> documentation
>>> tutoriel
>>> forum

3 – indiquez votre degré de réussite du travail demandé :
entre 75 et 100 %
entre 50 et 75 %
entre 25 et 50%
moins de 25 %