Extraction des chefs-lieux de département
On donne la structure du fichier depts2018.txt
0 | 1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|---|
Descripteur | REGION | DEP | CHEFLIEU | TNCC | NCC | NCCENR |
Signification | Code Région | Code département | Code INSEE du chef lieu de la région | Type de nom en clair | Nom en clair (Majuscules) | Nom en clair (typographie riche) |
Et on rappelle la structure du fichier comsimp2018.txt
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Descripteur | CDC | CHEFLIEU | REG | DEP | COM | AR | CT | TNCC | ARTMAJ | NCC | ARTMIN | NCCENR |
Signification | Découpage de la commune en cantons | Chef-lieu d'arrondissement, de département, de région ou bureau centralisateur : 3 pour chef-lieu de département 4 pour chef-lieu de département et de région | Code région | Code département | Code commune | Code arrondissement | Code canton | Type de nom en clair | Article (majuscules) | Nom en clair (majuscules) | Article (typographie riche) | Nom en clair (typographie riche) |
Question
Écrire un script en Python permettant, à partir des fichiers depts2018.txt et comsimp2018.txt d'afficher en console la liste des noms de département avec celui de leur chefs-lieux.
On utilisera que les deux collections dont le descripteur DEP en commun et on procédera en adaptant la méthode employée pour les régions.
On fera attention à ce qu'une commune chef-lieu de région est aussi chef-lieu de département.
Voici le script qu'il faut sauvegarder dans le dossier où se trouvent les fichiers comsimp2018.txt et depts2018.txt.
import csv
# extraction des donnnées sur les communes
with open('comsimp2018.txt', 'r', encoding='latin1') as f:
dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
datas_communes = list(csv.reader(f, dialect=dialecte_fichier_csv))
# extraction des données sur les départements
with open('depts2018.txt', 'r', encoding='latin1') as f:
dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
datas_departements = list(csv.reader(f, dialect=dialecte_fichier_csv))
# ********** traitement ************
print("Nom des chefs-lieux de département")
# pour chaque commune dans la liste datas_communes,
for commune in datas_communes:
# si la valeur de CHEFLIEU est '3' ou '4'
if commune[1]=='3' or commune[1]=='4':
# alors pour chaque département dans la liste datas_departements,
for departement in datas_departements:
# si les valeurs du descripteur DEP de la commune et du département sont identiques
if commune[3]==departement[1]:
# afficher le nom du département et de la commune chef-lieu
print([departement[4], commune[9]])
A l'exécution, on obtient :
Nom des chefs-lieux de département
['AIN', 'BOURG-EN-BRESSE']
['AISNE', 'LAON']
['ALLIER', 'MOULINS']
['ALPES-DE-HAUTE-PROVENCE', 'DIGNE-LES-BAINS']
['HAUTES-ALPES', 'GAP']
['ALPES-MARITIMES', 'NICE']
['ARDECHE', 'PRIVAS']
['ARDENNES', 'CHARLEVILLE-MEZIERES']
['ARIEGE', 'FOIX']
['AUBE', 'TROYES']
['AUDE', 'CARCASSONNE']
['AVEYRON', 'RODEZ']
['BOUCHES-DU-RHONE', 'MARSEILLE']
['CALVADOS', 'CAEN']
['CANTAL', 'AURILLAC']
['CHARENTE', 'ANGOULEME']
['CHARENTE-MARITIME', 'ROCHELLE']
['CHER', 'BOURGES']
['CORREZE', 'TULLE']
["COTE-D'OR", 'DIJON']
["COTES-D'ARMOR", 'SAINT-BRIEUC']
['CREUSE', 'GUERET']
['DORDOGNE', 'PERIGUEUX']
['DOUBS', 'BESANCON']
['DROME', 'VALENCE']
['EURE', 'EVREUX']
['EURE-ET-LOIR', 'CHARTRES']
['FINISTERE', 'QUIMPER']
['CORSE-DU-SUD', 'AJACCIO']
['HAUTE-CORSE', 'BASTIA']
['GARD', 'NIMES']
['HAUTE-GARONNE', 'TOULOUSE']
['GERS', 'AUCH']
['GIRONDE', 'BORDEAUX']
['HERAULT', 'MONTPELLIER']
['ILLE-ET-VILAINE', 'RENNES']
['INDRE', 'CHATEAUROUX']
['INDRE-ET-LOIRE', 'TOURS']
['ISERE', 'GRENOBLE']
['JURA', 'LONS-LE-SAUNIER']
['LANDES', 'MONT-DE-MARSAN']
['LOIR-ET-CHER', 'BLOIS']
['LOIRE', 'SAINT-ETIENNE']
['HAUTE-LOIRE', 'PUY-EN-VELAY']
['LOIRE-ATLANTIQUE', 'NANTES']
['LOIRET', 'ORLEANS']
['LOT', 'CAHORS']
['LOT-ET-GARONNE', 'AGEN']
['LOZERE', 'MENDE']
['MAINE-ET-LOIRE', 'ANGERS']
['MANCHE', 'SAINT-LO']
['MARNE', 'CHALONS-EN-CHAMPAGNE']
['HAUTE-MARNE', 'CHAUMONT']
['MAYENNE', 'LAVAL']
['MEURTHE-ET-MOSELLE', 'NANCY']
['MEUSE', 'BAR-LE-DUC']
['MORBIHAN', 'VANNES']
['MOSELLE', 'METZ']
['NIEVRE', 'NEVERS']
['NORD', 'LILLE']
['OISE', 'BEAUVAIS']
['ORNE', 'ALENCON']
['PAS-DE-CALAIS', 'ARRAS']
['PUY-DE-DOME', 'CLERMONT-FERRAND']
['PYRENEES-ATLANTIQUES', 'PAU']
['HAUTES-PYRENEES', 'TARBES']
['PYRENEES-ORIENTALES', 'PERPIGNAN']
['BAS-RHIN', 'STRASBOURG']
['HAUT-RHIN', 'COLMAR']
['RHONE', 'LYON']
['HAUTE-SAONE', 'VESOUL']
['SAONE-ET-LOIRE', 'MACON']
['SARTHE', 'MANS']
['SAVOIE', 'CHAMBERY']
['HAUTE-SAVOIE', 'ANNECY']
['PARIS', 'PARIS']
['SEINE-MARITIME', 'ROUEN']
['SEINE-ET-MARNE', 'MELUN']
['YVELINES', 'VERSAILLES']
['DEUX-SEVRES', 'NIORT']
['SOMME', 'AMIENS']
['TARN', 'ALBI']
['TARN-ET-GARONNE', 'MONTAUBAN']
['VAR', 'TOULON']
['VAUCLUSE', 'AVIGNON']
['VENDEE', 'ROCHE-SUR-YON']
['VIENNE', 'POITIERS']
['HAUTE-VIENNE', 'LIMOGES']
['VOSGES', 'EPINAL']
['YONNE', 'AUXERRE']
['TERRITOIRE DE BELFORT', 'BELFORT']
['ESSONNE', 'EVRY']
['HAUTS-DE-SEINE', 'NANTERRE']
['SEINE-SAINT-DENIS', 'BOBIGNY']
['VAL-DE-MARNE', 'CRETEIL']
["VAL-D'OISE", 'PONTOISE']
['GUADELOUPE', 'BASSE-TERRE']
['MARTINIQUE', 'FORT-DE-FRANCE']
['GUYANE', 'CAYENNE']
['LA REUNION', 'SAINT-DENIS']
['MAYOTTE', 'DZAOUDZI']