Les données structurées

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.

Solution

Voici le script qu'il faut sauvegarder dans le dossier où se trouvent les fichiers comsimp2018.txt et depts2018.txt.

1
import csv
2
3
# extraction des donnnées sur les communes
4
with open('comsimp2018.txt', 'r', encoding='latin1') as f:
5
    dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
6
    datas_communes = list(csv.reader(f, dialect=dialecte_fichier_csv))
7
8
# extraction des données sur les départements
9
with open('depts2018.txt', 'r', encoding='latin1') as f:
10
    dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
11
    datas_departements = list(csv.reader(f, dialect=dialecte_fichier_csv))
12
13
14
# ********** traitement ************
15
print("Nom des chefs-lieux de département")
16
# pour chaque commune dans la liste datas_communes,
17
for commune in datas_communes:
18
    # si la valeur de CHEFLIEU est '3' ou '4'
19
    if commune[1]=='3' or commune[1]=='4':
20
        # alors pour chaque département dans la liste datas_departements,
21
        for departement in datas_departements:
22
            # si les valeurs du descripteur DEP de la commune et du département sont identiques 
23
            if commune[3]==departement[1]:
24
                # afficher le nom du département et de la commune chef-lieu
25
                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']

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Stéphan Van Zuijlen Licence de documentation libre GNURéalisé avec Scenari (nouvelle fenêtre)