Les données structurées

La lecture de données au format CSV avec EduPython

Pour démarrer

Créez un répertoire dans lequel vous mettrez les deux fichiers reg2018.txt et comsimp2018.txt ( ils sont compressés, il faudra donc les décompresser )

Ce sera notre répertoire de travail.

SimulationLe script en Python qui charge le fichier des régions

Voici le script en Python qui charge le fichier des régions.

  • copier/coller ce script dans EduPython (utiliser le bouton à droite du script pour le copier dans le presse-papier)

  • enregistrer le script dans le répertoire dans lequel se trouve les deux fichiers reg2018.txt et comsimp2018.txt.

1
import csv
2
with open('reg2018.txt', 'r', encoding='latin1') as f:
3
    dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
4
    datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))
5

Explication du script :

En français, cela donne :

  • Importer la bibliothèque csv qui permet à Python de connaître des fonctions lui permettant de manipuler les fichiers au format CSV. Ces fonctions auront un nom préfixé par 'csv.'.

  • Avec le fichier à ouvrir 'reg2018.txt', encodé avec le jeu de caractères 'latin1', ce fichier étant noté f :

  • lire la première ligne (f.readline()) et l'analyser avec la méthode csv.Sniffer().sniff(), de manière à trouver quel est le séparateur des champs de ce fichier au format CSV, puis sauvegarder cette information dans la variable dialecte_fichier_csv,

  • lire ensuite (csv.reader()) la suite du fichier f en utilisant l'information sur le séparateur de champs trouvé à l'étape précédente (dialect=dialecte_fichier_csv), et transformer en liste (list()) le résultat de la lecture, qui doit être sauvegardé dans la variable datas_regions.

En conséquence, la variable datas_regions prend pour valeur la liste des données contenues dans le fichier reg2018.txt, sans le nom des descripteurs, donc uniquement les données sur les régions.

SimulationÀ faire vous même

Exécuter ce script :

1
import csv
2
3
with open('reg2018.txt', 'r', encoding='latin1') as f:
4
    dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
5
    datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))
6
print(datas_regions[0])

Vérifiez que cela donne :

['01', '97105', '3', 'GUADELOUPE', 'Guadeloupe']

Cela signifie que pour la région Guadeloupe,

REGION='01', CHEFLIEU = '97105', TNCC='3', NCC='GUADELOUPE', NCCENR='Guadeloupe'.

Connaître le nombre de régions

C'est la longueur de la liste data_regions

Il suffit de rajouter la ligne :

1
print(len(datas_regions))

Réponse : 18

Faire afficher les données de toutes les régions

Il faut faire une boucle, c'est à dire des instructions qui vont s'exécuter plusieurs fois.

Rajoutez le code suivant

1
for region in datas_regions:
2
    print(region)

En français, cela signifie : pour chaque région dans la liste datas_regions, afficher les données sur cette région.

Vous devriez obtenir :

['01', '97105', '3', 'GUADELOUPE', 'Guadeloupe']

['02', '97209', '3', 'MARTINIQUE', 'Martinique']

['03', '97302', '3', 'GUYANE', 'Guyane']

['04', '97411', '0', 'LA REUNION', 'La Réunion']

['06', '97608', '0', 'MAYOTTE', 'Mayotte']

['11', '75056', '1', 'ILE-DE-FRANCE', 'Île-de-France']

['24', '45234', '2', 'CENTRE-VAL DE LOIRE', 'Centre-Val de Loire']

['27', '21231', '0', 'BOURGOGNE-FRANCHE-COMTE', 'Bourgogne-Franche-Comté']

['28', '76540', '0', 'NORMANDIE', 'Normandie']

['32', '59350', '4', 'HAUTS-DE-FRANCE', 'Hauts-de-France']

['44', '67482', '2', 'GRAND EST', 'Grand Est']

['52', '44109', '4', 'PAYS DE LA LOIRE', 'Pays de la Loire']

['53', '35238', '0', 'BRETAGNE', 'Bretagne']

['75', '33063', '3', 'NOUVELLE-AQUITAINE', 'Nouvelle-Aquitaine']

['76', '31555', '1', 'OCCITANIE', 'Occitanie']

['84', '69123', '1', 'AUVERGNE-RHONE-ALPES', 'Auvergne-Rhône-Alpes']

['93', '13055', '0', "PROVENCE-ALPES-COTE D'AZUR", "Provence-Alpes-Côte d'Azur"]

['94', '2A004', '0', 'CORSE', 'Corse']

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