Session du 07 janvier 2025 à 21h00
TOSA & Certifications
Librairie Standard & Modules
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Session de mentorat TOSA : module CSV
Mentorat sur la librairie standard CSV
00:00:54 :Moi, non.Oui, oui, oui.Je vais faire un petit rappel vite fait quand même. Alors, le CSV, c'est un format de tableur léger qui permet de stocker des données qu'on pourrait retrouver dans un tableau sous la forme d'un type de fichier texte.
00:01:40 :Ça marche. Donc, alors, je vais vous appuyer sur ça.Je crois qu'il clique. Voilà. Voilà. Ok. Est-ce que vous voyez l'écran ?Oui.En termes de taille, est-ce que c'est suffisamment grand l'écriture ou est-ce que vous voulez que j'écrive un peu plus gros ?
00:02:14 :C'est parfait pour moi.Moi aussi.C'est bon pour tout le monde ?Oui, je veux bien que tu grossisses un peu.Comme ça, c'est bon ?
00:02:23 :C'est un peu mieux, merci.Ok. Je vais supprimer ça.Donc, le CSV, je vais vous montrer vite fait à quoi ça pourrait ressembler.On pourrait imaginer un tableau marqué nom.
00:02:40 :La suite au code va hurler, mais ce n'est pas grave.Et puis, par exemple, H.Et à la suite du format, on pourrait avoir...Allez, hop.
00:02:50 :Tac.Voilà.Le premier qui rigole quand je mets mon âge.Attention.Après, je ne sais pas.Hop.Tac.Voilà.Donc là, on retrouve bien le format d'un tableau.
00:03:14 :Donc là, les colonnes, ça serait nom, prénom et âge.Et là, chaque ligne qu'on retrouve là.Donc, ça permet de sauvegarder.Alors, vous retrouverez ce format de sauvegarde notamment sous Excel, le tableur Excel,pour ceux qui connaissent, sous forme OpenCAL que le fait aussi.
00:03:29 :En fait, tous les tableurs plus ou moins le font.Et si vous ouvrez un fichier CSV avec un tableur Excel, Calc ou autre,il va automatiquement détecter que c'est un CSVet il va vous proposer de le mettre sous forme de tableau directement.
00:03:43 :Donc, sur Excel, il va falloir des fois préciser que c'est des points d'irrégule,d'irrégule ou autre, puisqu'on peut faire plusieurs types de séparateurs.Mais généralement, il va reconnaître de lui-même un petit peu la cohésion.
00:03:56 :Donc, en Python, pour traiter ce genre de dossier, on a un module.Et on a un module qui s'appelle, tout bêtement, CSV.Voilà, celui qui a écrit module, il s'est cassé la tête pour le nom.
00:04:08 :Et donc, qu'est-ce qui va nous permettre ce module ?Et bien, comme on parle de manipulation de fichiers,on va retrouver tout ce qu'on peut trouver,un petit peu comme usage de fichiers qu'on a avec le WithOpen ou le FileOpen,avec quelques petites nuances, puisque comme on est face à un format CSV,
00:04:25 :forcément, on va pouvoir avoir un petit peu plus de précision dans ce qu'on faitet on va pouvoir, notamment, obtenir des objets assez intéressants dans cette jeu.
00:04:33 :Donc, je vais déjà vous montrer un petit peu comment ça marchepour simplement lire un fichier.Donc, on va par exemple...Alors, par contre, là, je n'ai pas de créé de fichier correspondant.
00:04:44 :Bon, ce n'est pas grave, je vais vous montrer le code.Ah, j'en trouverai aussi. Je vais en faire un après.Salut, Arcel.Donc, je disais, on va faire ça, par exemple.
00:05:03 :Je vais le faire après le fichier, comme ça, pour qu'on puisse le lire.Donc, comme pour un fichier classique, on va pouvoir préciser un mode de lecture.
00:05:14 :Bon, là, quand on va être en lecture, on va utiliser le mode R.On va l'appeler, je ne sais pas, File.On va être très original, ce soir.
00:05:24 :Et là, comment ça va se passer ?Donc, quand on a un fichier classique, par exemple, on va fairedata égale file.read.C'est à peu près clair pour tout le monde.
00:05:37 :On pourra utiliser Readlines, Readline ou Readlines, ainsi de suite.Là, pour un CSV, il va falloir forcément attaquer avec le module CSV.Et on va faire CSV, et pour lire, on va utiliser la fonction Reader.
00:05:51 :Tout bêtement.Et en paramètres, on lui place notre fichier.Et donc là, à partir de là, il va nous créer une liste dans laquelle on va avoirchaque ligne qu'on a dans le fichier CSV.
00:06:03 :Je vais créer le fichier, parce que sinon, je vais faire ça.Parce que ça m'embête de ne pas vous montrer le fonctionnement en direct.Je vais mettre ça sur le bureau.
00:06:20 :Comme ça.Je vais créer le fichier directement.Voilà.On va reprendre un exemple.Hop.Hop.OK.OK.Voilà.Je vais le mettre au même endroit, comme ça, il ne nous embêtera pas.
00:07:16 :Et voilà.OK.Donc là, maintenant, on a notre fichier.Donc, si j'imprime mon data direct, normalement, vous allez voir.Si je peux me permettre, Stéphane, tu as juste une petite erreur.
00:07:34 :Pas le bon nom de fichier.Ah, oui.Exact.Bien vu.Ça devrait aller mieux.Alors, qu'est-ce qui ne va pas ?Il ne trouve pas le fichier.
00:07:48 :Pourquoi ?Bon, ce n'est pas grave.Je ne vais pas m'embêter.On va faire.Ce n'est pas très propre, mais le but, c'est que vous voyez comment ça marcheet qu'on ne passe pas trois heures à débuguer un code.
00:08:04 :Voilà.Donc là, vous voyez, il ne nous renvoie pas la liste des données, mais bien un objet.Parce que là, on a bien créé un objet avec le module CSD.
00:08:27 :C'est-à-dire qu'il nous renvoie bien une classe à spécifique reader qui renvoie un objetet qui a des fonctionnalités.Donc, pour pouvoir voir les données qui sont dedans, il va falloir qu'on itère dessus,parce que c'est un objet de type itérateur.
00:08:43 :Par exemple, on va faire comme ça.OK.Et là, si j'imprime, on voit bien qu'il me sort mes trois listes avec mes données,mes trois lignes données qui sont dans le fichier CSV.
00:09:00 :OK.Donc maintenant, on a dit que c'était un tableur.Donc, un tableau, c'est une colonne avec un titre et puis en dessous, des lignes avec des entréescorrespondant aux différents titres qu'il y a sur la première ligne.
00:09:13 :Qu'est-ce qui serait intéressant ? On va créer comme type d'objet pour traiter ça, en fait.Parce que là, l'idée, c'est qu'on sait que Mathieu correspond au nom, Dupont correspond au nom,Stéphane entre nos prénoms, âge à 20 et 30.
00:09:30 :Un dictionnaire ?Voilà, exactement. Un dictionnaire.Et donc là, au CSV, ils ont prévu le coup.On a un module spécifique pour les dictionnaires.Donc, à la place de Reader, on met tout simplement dicReader.
00:09:49 :D'ailleurs, il y a le majuscule.Donc, on lui passe le file.Et là, ce coup-ci, si on fait ça,là, on obtient bien un dictionnaire.
00:10:05 :Alors, qu'est-ce qui m'a fait... Ah oui, c'est pour...Qu'est-ce qu'il y a ?Je l'ai dit, les points et les virgules.On va voir ça après, mais de base, ça fonctionne avec les virgules.
00:10:17 :On va voir après qu'on pourra fonctionner s'il y a des points et des virgules ou autre.Comme ça.Voilà.Donc, vous voyez, là, il m'a bien sorti un dictionnaireavec, en clé, la première ligne du fichier CSV.
00:10:37 :Et pour chaque valeur, pour chaque dictionnaire, il a pris par ligne,il a créé un dictionnaire automatiquement.Donc, comme vous voyez, par exemple, pour sauvegarder des données,alors là, on va se rapprocher de ce qu'on faisait un petit peu avec le JSON,ou avec le module JSON, pardon,où, si vous vous souvenez, les JSON, on pouvait transformer en fichiers,
00:10:56 :en fichiers type JSON,pour sauvegarder des données sous la forme d'un dictionnaire, entre autres.Et bien là, avec CSV, on obtient un petit peu la même chose.
00:11:05 :C'est-à-dire qu'on peut sauvegarder les données sous la forme d'un dictionnaire.Mais sous un format JSON, donc un petit peu plus léger.Est-ce que c'est bon pour vous ?
00:11:19 :Oui, pour moi, super.Donc maintenant, on a vu...Oui, c'est bon.C'est bon pour tout le monde ?N'hésitez pas.Alors, j'ai vu quelques noms que je n'ai pas trop l'habitude de voir dans les mentorats.
00:11:35 :S'il y a une question ou autre, vous ouvrez votre micro, vous la posez.Je n'ai pas rappelé au début de la session, mais il ne faut pas hésiter.
00:11:42 :Le but du jeu, c'est justement que vous posiez vos questionspour que vous soyez le plus au courant des trucs.Donc maintenant, on a vu comment lire les fichiers.
00:11:52 :Après, je viens de vous parler justement qu'on peut faire comme avec le JSON,on va pouvoir sauvegarder les données.Donc du coup, maintenant, on va regarder un petit peu comment on peut écrire dans ces fichiers.
00:12:02 :Donc là, on va faire autrement.Pour pouvoir écrire, on va déjà créer nos données à mettre dans le fichier.Alors, comment ça va se présenter ?
00:12:21 :Pour que ça puisse marcher, il faut qu'on fasse une listequi va elle-même contenir des listes dans lesquelles on va mettre nos données.Donc là, on va reprendre notre exemple.
00:12:33 :Si je ne fais pas ça, il ne va pas aimer. Voilà.Donc, nom. Prénom.Age.Ok.C'est vite.Ok.Ok.Clic.Clic.Voilà.Donc là, j'ai créé mon jeu de données.
00:13:35 :On va supprimer ça.Comme d'hab, je vous mettrai un petit GitHub dispopour récupérer un fichier qui contiendra des exemples de tout ce qu'on a vu.
00:13:44 :Donc, on va créer un autre fichier.Open.On va l'appeler nouveau.CSV.Ok.Donc forcément, une petite révision.Pour pouvoir écrire dans un fichier, on choisit quel mode.
00:14:09 :Write.Voilà.C'est bien.Les bulles n'ont pas tout effacé.Alors, As File.Et là, pour pouvoir l'écrire,on va utiliser une commande.Alors, c'est Writer.
00:14:33 :Ok.Donc là, c'est une variable dans laquelle on va mettre tout ça.CSV.Writer.Et là, on lui passe notre fichier.D'accord ?Donc là, on vient de créer un objet type CSV Writerqui va être un genre de context manager comme on a avec les Openou d'objet de manipulation
00:15:02 :qui va nous permettre de générer une interfacepour pouvoir écrire dans le fichier.Et pour pouvoir mettre les données dans le fichier,on va faire tout simplementWriter.WriteRules
00:15:21 :puisqu'on en a plusieurs.Et en paramètre, on va lui passer nos données.D'accord ?Et donc là, avec ça, on va pouvoir créer le fichier CSV.
00:15:36 :C'est ça.Et là, voilà.Si je vous affiche le contenu du fichier nouveau CSV,vous voyez à l'intérieur, il nous a bien remis,comme j'avais fait avec le CSV,nos prénoms, les données qui sont en dessous.
00:15:59 :D'accord ?Donc ça, c'est pour l'écriture, on va dire, simple dans un fichier.Maintenant, c'est bien,mais comme on va souvent plutôt manipuler,généralement quand on commence à jouer un petit peuavec pas mal de data et tout ça,on a un petit peu le réflexe de mettre ça dans le dictionnaire
00:16:19 :pour pouvoir retrouver nos clés, nos valeurs,savoir à quoi correspond.Donc on va voir la version ce coup-ci avec le dictionnaire.Alors, pour la version dictionnaire, je vais couper ça en attendant.
00:16:33 :Voilà.Pour les données ce coup-ci, on va faire autrement.On va mettre, prendre ça,parce que sinon ça va me prendre une plombe.Je vais tout simplement créer mon dictionnaire.
00:16:54 :Ok, voilà.Ok, je vais faire pareil avec le prénom.Et même chose avec l'âge.C'est pas très propre ce que je fais, mais bon.Ça sera fonctionnel.
00:17:31 :C'est bon.Et donc on va se créer une liste de dictionnaires.Voilà.Et voilà.Hop, voilà.Une petite liste de dictionnaires avec nos prénoms et ainsi de suite.
00:18:04 :Donc là, on va rester toujours sur la même chose.On va juste préciser pour le dictionnaire,alors on aurait pu le faire avec le prénom.
00:18:14 :On va le faire avec le nom.On va juste préciser pour le dictionnaire,alors on aurait pu le préciser pour le writer,mais bon, c'est pas forcément nécessaire,mais sur le dictionnaire, il vaut mieux le mettre.
00:18:29 :On va préciser un paramètre nulle à unepour qu'il comprenne qu'à chaque fois, il doit retourner à la ligne.À chaque fois qu'il rencontre un dictionnaire.
00:18:37 :C'est bon.Et là, le truc qui va changer,c'est qu'on va déjà lui indiquerquelle est la liste des clés.Donc là, on le fait à la main.
00:18:51 :On pourrait très bien utiliser une méthode avec DICpour récupérer les clés.On va le faire à la main.Ça sera un petit peu plus simple.
00:19:02 :Donc on va lui dire que nos clés, c'est nom,prénomet âge.Voilà.Ensuite, on va faire NotWriter.On va lui mettre,on va utiliser le module CSV,à votre avis, lequel on va utiliser.
00:19:28 :Il apparaît, j'avais pas vu.DICWriter.Donc vous voyez, ils sont restés quand même assez simplesentre la version dictionnaire et la version simple.On rajoute le DIC, on met un majuscule à la méthodeet on est bon.
00:19:40 :Et là, qu'est-ce qu'on lui passe en paramètres ?On va lui passer tout d'abord le fichier.Et ensuite, on va lui indiquer que les champs,c'est égal à la liste qu'on a créée juste au-dessus.
00:19:52 :Ça s'appelle filenames.C'est bon pour tout le monde jusque-là ?Oui.Ensuite,là où c'est le plus embêtant pour le dictionnaire,mais on va dire plus pratique pour la suite.
00:20:09 :On va d'abord lui dire d'écrire les en-têtes.Donc on va lui dire,pas de bêtises, voilà.On va lui utiliser la commande validFeederpour lui indiquer que sur la première ligne,il doit d'abord écrire les en-têtes,donc ce qui va correspondre à filenames.
00:20:32 :Et ensuite, on va lui dire,d'écrire,d'écrire les colonnes en se basant sur le dictionnaire qu'on a créé,la liste du dictionnaire au-dessus,données.OK ?
00:20:57 :On va lancer ça.OK, ça s'est passé.Et si je vous affiche le contenu,on a bien exactement le même contenu que tout à l'heurequ'on avait fait avec le Writer,avec le Writer simple.
00:21:19 :Sauf que la différence, c'est qu'au lieu de partird'une liste de listescontenant nos colonnes, nos noms de colonnes,puis après la liste suivante,c'était la première rangée de values et ainsi de suite,là, on est parti d'une liste de dictionnaires.
00:21:33 :Donc, si on a créé, généré des dictionnairesdans le cadre de son programme,on peut mettre ces dictionnaires dans une listeet renvoyer ça directement.
00:21:41 :Donc, on pourrait très bien imaginer que, par exemple,vous partez d'un fichier JSONqui va contenir plusieurs dictionnaires,parce que, admettons,vous avez, je ne sais pas, pour un site de commerce,une liste de clients qui est stockée sous forme JSONavec une liste de dictionnaires,et vous voulez pouvoir utiliser cette liste de clients
00:21:59 :dans un tableur,là, vous partez de ce fichier JSONqui va vous créer une liste de dictionnaires.De cette liste de dictionnaires,vous allez pouvoir le convertir en CSVet du CSV, vous allez pouvoir traiter la liste de clientsdans un tableur.
00:22:14 :Voilà un usage très concret.Stéphane, est-ce que tu pourrais expliquerquoi le newline égal ? Rien du tout.Alors là, c'est juste pour lui indiquer, justement,comment il doit gérer les fins lignes, en fait.
00:22:31 :On va prendre la définition dessus, voilà.Si je reste dessus, normalement,il devrait afficher la définition.Voilà, attends la définition.Voilà.Donc, soit, à la nouvelle ligne, là,généralement, on met newline vide.
00:22:51 :Moi, je le mets toujours quand c'est edXet évite les problèmes,comme c'est un format un peu plus particulier.C'est pas toujours obligatoire,mais moi, je conseille de le mettre avec edX.
00:22:59 :C'est plus simple.Là, il va faire une ligne simple.Mais par exemple, vous pourrez imaginer,je sais pas, pour une raison quelconque,vous dire qu'en newline, vous mettez une parenthèse.
00:23:09 :Par exemple.Si je lance, normalement, si j'ai pas de bêtises,si ça pose problème.En fait, c'est pour indiquer le type de fin de ligneque vous voulez, d'accord ?
00:23:18 :Honnêtement, je l'ai toujours utilisé en newline vide.Ça marche mieux avec les dictionnaires,donc je me suis pas embêté de plus que ça.D'accord ?
00:23:27 :Donc, si tu mets newline vide,ça veut dire qu'il saute une ligne ?Enfin, qu'il va à la ligne ?Voilà. Il revient bien à la ligne.
00:23:37 :D'accord.Voilà.Quand vous le faites en writer simple,y'a aucun souci.Bon, on peut le mettre aussi.Après, vous pouvez le mettre dans tous les cas.
00:23:46 :C'est pas un problème en soi, d'accord ?Mais avec ces fichiers,on va lire les listes de listes.Il va traiter plus facilement.Dès qu'on est sur du Dick Writer,moi, je conseille de le mettre.
00:23:59 :Ça évite les erreurs très péripétiquesqu'on pourrait rencontrer avec des dictionnaires.D'accord.Merci.Pas de souci.Est-ce que vous avez d'autres questions sur le dessus ?
00:24:14 :Et le white fader,il se fait pas automatiquement ?Non.Si on lui demande pas de le faire,il met pas ?Non, il va pas le faire.
00:24:23 :Il va pas le faire.Attends, on va la tenter.Ouais, hop.Et voilà.Là, vous voyez, j'ai relancé.Là,là,et si j'affiche mon fichier,vous voyez, il a rentré juste les données.
00:24:47 :Ok.Donc, pour faire ça,t'es obligé de faire le reteaser.Alors,c'est un petit peu plus complexeà faire avec le CSVqu'avec le JSON pour mettre dans un fichier,mais maintenant, si le but, comme je vous disais,c'est d'aller exploiter par la suite les donnéesdans un tableur type Excel ou Calc,
00:25:14 :là, si vous partez d'un fichier JSON,ce que vous allez souvent trouver sur des sites Internetou dans beaucoup d'autres transmissions de données,passez à JSON en CSV.
00:25:25 :Vous voyez que c'est quand même relativement simple.Et au bout du compte,vous pouvez traiter vos donnéesderrière dans un tableur.Quand on doit faire du traitement de données,ça devient peut-être plus facile déjà.
00:25:37 :C'est bon pour tout le monde ?Pas de soucis.Donc maintenant,je vais vous montrer la petite astuce vitrée.J'avais un petit peu anticipé tout à l'heure.
00:25:51 :Je vais reprendre mon fichier CSV iciet je vais mettre des points-virgules.Donc, vous avez vu tout à l'heure,c'est bien comme ça que je vous ai montréquand ça ne marche pas,qu'avec des points-virgules en séparateur, de base,le module CSV, il n'arrive pas à traiter.
00:26:06 :Ce que, pour lui,comme souvent on l'a dit,c'est comma-séparative value,donc comma-virgule en anglais.8 points-virgule,donc c'est des semi-colonnes, je crois, en anglais.
00:26:19 :J'ai un doute.Pour lui, il ne connaît pas.C'est ça, semi-colonnes.Merci.Ça tombe bien.Je dois réviser un peu l'anglais.Ça tombe bien, merci.
00:26:29 :Donc là, on va reprendre ça.Ça, on n'en a plus besoin.Je vais supprimer tout ça.Crac.Je vais reprendre mon exemple CSV.Je vais le mettre en mode header.
00:26:48 :Je vais faire ça, comme ça.Je vais faire ça, comme ça.Je vais faire ça, comme ça.Je vais faire ça, comme ça.Je vais faire ça, comme ça.
00:27:02 :Je vais faire ça, comme ça.Voilà, on sera bien.Hop.Alors, donc,je vais reprendre ce que je vous avais dit tout à l'heure.Data.
00:27:23 :Hop.File.OK.Ça, c'est l'exemple qu'on avait fait au tout début.OK.Et, comme je vous l'ai montré,là, il l'a pris, mais vous voyez,on n'est pas sur la même version qu'à tout à l'heure.
00:27:49 :Je vais vous montrer.Avec ça, il devrait poser plus d'erreurs.Et comme je sais que je peux le faire,forcément, tout à l'heure, il ne voulait pas marcher.
00:27:58 :Maintenant, il marche.Hop.Voilà.Normalement, avec ça, ça devrait me faire une belle erreur.Eh bien, non, il reprend.Bon, peu importe.Je vais le faire.
00:28:17 :Je vais le faire.Je vais le faire.Je vais le faire.Je vais le faire.Je vais le faire.Je vais le faire.Je vais le faire.
00:28:24 :Je vais le faire.Peu importe.Ça avait bien fait ça.C'est juste que là, du coup,il y a une seule valeur au lieu d'en avoir trois.
00:28:33 :Voilà.Donc là,pour lui indiquer justementquel type de séparateur on a mis,on va utiliser le paramètre,l'attribut,Daily.Alors que je ne me trompe pas.
00:28:50 :Délimiteur.Je me suis fait une foute de frappe ou quoi ?Ah oui, je suis bête, c'est pas grave.Hop là, c'est moi qui fais une bêtise.
00:28:58 :Voilà.Je vous disais mince.Voilà.Délimiteur.Et là, on va pouvoir lui indiquerquel type de séparateur on a utilisé.Donc là, j'ai utiliséles pipes.
00:29:10 :Je vais lancer.Ah, voilà.Et là, il m'a bien séparé mes trois valeurs.D'accord ?Je vous remonte avec les points-virgules.Voilà.Et là, si à la place,je mets mes points-virgules,effectivement,il me retrouve bien mes trois valeurs.
00:29:32 :D'accord ?Donc, si jamais vous tombez sur un fichierSCSV qui est un peu exotique,ou pour une raison quelconque,celui qui a créé ce fichier,il a mis des séparateurs autresque les virgules ou points-virgules.
00:29:42 :Alors, virgule et points-virgule,c'est un peu la même chose.Virgule et points-virgule,c'est ce que vous rencontrerezdans 90-95% des cas avec des fichiers SCSV.
00:29:50 :Mais, on ne sait jamais,pour une raison quelconque,le créateur du fichier,il a voulu mettre,je ne sais pas, moi...Une tabulation ?Non, quelqu'un mettraitbackslash-t, ça marcherait ?
00:30:03 :Backslash-t, je ne sais passi une tabulation,ça serait pris en compte.Mais, par exemple,des signes égales, des signes plus,enfin, peu importe.Vous savez qu'avec délimiteur,vous pouvez lui indiquerquel caractèreagit comme séparateur.
00:30:17 :Donc, c'est pour çaque je pense queles tabulations,ça ne marcherait pas.D'accord.On peut essayer vite fait.Pourquoi on indiqueplusieurs en même temps ?
00:30:27 :Alors, non.Normalement,un fichier CSV,il est séparé quepar un seul typede caractère.Dans un fichier CSV,vous n'allez pas avoir de CSVavec un coup,je fais des points-virgules,un coup des virgules,un coup des tirés,un coup des underscore,et ainsi de suite.
00:30:46 :Justement,il y a des fichiers CSVqui, justement,ne sont pas propres.Au début,ils ont commencéà coup de virgule,après, ils ont mis des virgules,ou alors des plus.
00:30:56 :Et, du coup,si on pouvait indiquerqu'il y a plusieurs délimiteurs,que, par exemple,dès qu'il voit une virguleou un point-virguleou un plus,c'est un délimiteur.
00:31:07 :Ce n'est pas possible, ça ?En fait,comme tu vois,le délimiteur,je vais tenter l'expérience,mais non,normalement,il ne va pas me le prendre,mais on va tenteravec un pipe.
00:31:19 :Est-ce qu'il accepte ?Non.Le délimiteur,c'est vraiment juste un caractère.Donc, vous ne pouvez pasmettre 50 caractères dedans,c'est vraiment juste un caractère.
00:31:31 :Et si on laisse la virguledans la même chaîne de caractèresavec le point-virgule ?En fait,est-ce qu'il va itérersur la chaîne de caractères ?
00:31:47 :Je vais faire ça pour...Oui, très bien.Voilà.Et là, si on lance...Oui, ça pose problème.Il n'itère pas, en fait.Il prend un caractère.
00:31:59 :Voilà, il te met bien.Le délimiteur doit avoir un...Ça va être une chaînede un caractère.D'accord.S'il y a plusieurs caractères,ça ne marchera pas.
00:32:08 :Ok.Après, je conçois la remarque...Bon, il y a des gensqui ont fait des CSV,qui ont commencéavec du point-virgule,après, ils ont reprisavec de la virgule,puis finalement,ils ont dit que le point-virgule,c'est mieux,et on se retrouve avec du CSVquelque peu sale.
00:32:25 :Alors...Après, tu peux gérerle CSV en lui-mêmeavant de passer par là.Exactement.Par exemple,on pourrait imaginer...Alors, il va falloir observerun peu le CSV manuellement,avant.
00:32:40 :Et là, on s'aperçoitqu'on a du point-virguleet du virgule.Donc, comment est-ce qu'onpourrait faire pour nettoyer ça ?Tu replaces.Voilà.En fait, le plus simple,c'est d'ouvrir le fichier...
00:32:53 :Hop.Je vais juste taper le code.Ben non, puisqu'on en a un.Je fais comme ça.Ok.Je vais faire comme ça plutôt,parce qu'avec un contexte manager,ça va être un peu embêtant.
00:33:16 :Donc là, on va vérifier déjàce que ça donne avec notre exemple.On a...La première ligne sépare,la dernière ligne sépare,mais la ligne du milieu,elle nous laisse tout ensemble.
00:33:27 :D'accord ?Alors...Voilà.Bon, je vais me suivre l'exemple.Après, c'est un double tranchant,le replace.Si jamais il y aun caractère à utiliser ailleursdans un commentaire,il va être remplacé.
00:33:53 :Du coup, ça peut remonter des colonnes.Ça peut.Mais bon, après, il n'y a pas de...Après, c'est comme çaque va procéder, en fait,oui, plus ou moins,avec Cell,quand il a des fichiers comme ça.
00:34:03 :Il faut bien choisir un séparateurqui ne soit pas...À la base,le mieux, c'est d'avoir des fichiersqui ne sont pas à moitié mazoutéspar des gensqui ont changé de valeur.
00:34:15 :Voilà.Mais bon,des fois, on peut se retrouver dans le cas.Donc, on va faire, par exemple...Faut la donner bien vieille.Pardon, je n'ai pas bien compris.
00:34:26 :Faut la donner bien vieille, bien...Ah oui, voilà.Tout le monde n'a pas de...Alors, on va faire un Readlines,comme ça, on aura un petit dictionnaire.
00:34:36 :OK.Il va te manquer les parenthèses,un Readlines.Oui, exact.J'étais en train de chercheroù j'allais faire le misclick.Alors, répète, merci.C'est bon, c'est bon.
00:34:54 :C'est bon, c'est bon.C'est bon, c'est bon.C'est bon, c'est bon.C'est bon, c'est bon.C'est bon, c'est bon.C'est bon, c'est bon.Répète, merci.
00:35:01 :On va faire lineégalline point replace.Alors, on va remplacer nos virgulespar des points virgules.OK.Je vais faire ça,parce que c'est ce que j'aurais compris.
00:35:29 :Je vais faire.C'est très dégueulasse,ce que je suis en train de vous taper comme code,mais c'est pour vraiment montrer la manip.Hop.Mais tu ne l'avais pas ouvert en Readwrite ?
00:35:50 :Oui, je l'avais ouvert en Readwrite,mais je préfère le rouvrir comme ça,ce sera plus simple.Je n'ai pas envie de m'embêteravec un site qui va m'embêter,parce que je ne suis pas au bon endroitpour lire le fichier,que je dois écrire les lignes à la suite,
00:36:03 :et ainsi de suite.OK.C'est du code à ne surtout pas reproduirelorsque vous faites vos exercices,quand je dois vous corriger,parce que je vais vous gronder, moi.
00:36:19 :Mais je le fais.Hop.Right.OK.Lines.Normalement, je pense qu'on est pas mal.Je pense que ça devrait passer.Voyons voir le résultat.Qu'est-ce qu'il m'a fait ?
00:36:44 :Ce sera intéressant de faire un cut.Oui, d'accord.On peut le voir là.Il n'a pas fait le remplacement, en fait.Non.Alors pourquoi ?
00:36:57 :Ah !Tac, tac, tac, tac, tac.À mon avis, je serais dû faire un redrawplutôt qu'un redraw.Je vais voir ça.Ou sinon, je vais faire autre chose.
00:37:20 :Parce que comme ça,je vais réussir à le faire.Je prends mon line.replace ici.Je vais faire une compréhension de liste.Ça devrait peut-être régler mon problème.
00:37:37 :Mais tu as un fichier CSV, en fait.Donc, du coup, il faut que tu utilises CSV, non ?C'est pas ça le problème ?Pas forcément.
00:37:44 :Alors là, en plus,là, je suis sur Mac.Donc, on est sur un système Linux.Et alors, pour votre petite culture,il faut savoir que les extensions de fichiers,c'est une pure invention Windows, en fait.
00:37:56 :À la base, Linux n'a absolument pas besoindes extensions.Voilà.OK.Là,le fichiement.Une compréhension de liste.On va voir là pour vérifier s'il a le code.
00:38:23 :On va voir là pour vérifier si la transformation se fait.Voilà.Là, c'était bon.C'est passé.À mon avis, c'est la boucle qui ne transformait pas le dictionnairecomme je voulais.
00:38:36 :Donc, voilà.Là, on est bien parti de notre data avec la virgule.On l'a remplacée par un point virgule.Et après, on a bien remplacé notre CSV correctement.
00:38:45 :Donc, vous voyez, quand il y a un petit souci comme ça,c'est un peu comme çaqu'il faut essayer un petit peu de réfléchir.OK, voilà, je suis face à tel problème.
00:38:57 :Mes données, elles sont pourries par telle ou telle forme de valeurou telle ou telle mauvaise gestion ou écriture dans le fichier.Alors, quel est le schéma que je peux retrouveret comment je peux modifier ça ?
00:39:09 :Après, on aurait pu, par exemple, faire la modification.Et quel autre système on aurait pu faire la modificationà la place d'un replace, par exemple ?
00:39:17 :Oui, après,pour la problématique de Christophe, je crois,on peut imaginer éditer à la main le CSV,repérer visuellement où les générations de séparateurs ont changé,mettre une ligne qui servirait de baliseet à la relecture par Python,à chaque fois qu'on va rencontrer cette balise,on va adapter le caractère séparateur.
00:39:46 :Cette solution pourrait.Mais ça nécessite quand même un contrôle visuel avant, quoi.C'est clair que si c'est un fichier énorme...Voilà, c'est ce que j'allais dire.
00:39:56 :À moins que de détecter avec des regex ou des choses comme ça.Voilà, c'est ça que je pensais.Vous pourriez, par exemple, vous aurez pu, par exemple,on peut, par exemple, utiliser une regex.
00:40:05 :Voilà, tout dépend s'il y a un motif répétitif ou pas.Après, je vous rappelle que le replacequ'on trouve sur les objets de type str,c'est ni plus ni moins qu'un regex,donc dans le module RE, un RE sub.
00:40:24 :Ça reste de l'expression régulière,puisqu'en fait, là, on indique,c'est le principe de l'expression régulière,on indique ce qu'on recherche,et ici, on indique par quoi on veut le remplacer.
00:40:36 :Oui, c'est une version simplifiée, en fait.Voilà, c'est une version simplifiée de la regex,donc on aurait pu utiliser éventuellement une regex.Voilà, voilà.Bon, je pense qu'on a fait le principalde ce qu'il y a à voir sur CSV.
00:40:55 :Bon, après, je vous invite à aller voir le modulesur python.org,la description du module,il y a encore plein d'autres possibilités avec le CSV,mais bon, là, ce que je viens de vous montrer,donc écrire et lire un fichier CSV,que ce soit sous la forme d'une lecture simple
00:41:18 :ou qu'on pourrait mettre dans un dictionnaireou depuis un dictionnaire,c'est vraiment les principaux usagesque vous allez trouver avec le module CSV.Est-ce que c'est bon pour vous,ou est-ce qu'il y a des questions ?
00:41:33 :On a parlé des séparateurs tables,on peut faire un petit test vite fait ?Ah ben, allez.Un petit bacs à acheter pour la fin.
00:41:43 :Tu es curieux de savoir aussi.Je n'ai pas envie de mettre la pression.Allez, donne-t'en.Si vous faites exploser mon PC, les gars,ça ne va pas le faire.
00:41:59 :Si j'ai le PC qui explose, les gars,ça ne va pas le faire.De toute façon, dis-toi bien, Stéphane,si tu ne le fais pas là, je serai obligé de le faire moi.
00:42:08 :Je ne serai pas de mon côté aussi.Là, tu travailles pour la communauté, là.On t'encourage.Après, je préfère que ce soit vos PC qui explosentplutôt que le mien.
00:42:17 :Moi, on ne voulait pas, mais...Je suis assez confiant, moi.Je pense que le bacs à acheter, il va le faire.Moi, je pense que ça passe.
00:42:25 :Alors, on lance des paris ou pas, alors ?Moi, je dis que ça marche.Je dis que ça marche.Moi, je dis qu'il bluffe,pour ceux qui auront la référence.
00:42:33 :Allez, on lance.Ah, c'est bon.Ça ne marche pas.Donc là, il faudrait refaire le traitement que tu as faitet remplacer le TAB par le point virgule.
00:42:48 :Je place le TAB.Là, tu dis CTRL-Z, CTRL-Z.Oui, c'est ça.C'est exactement ce que j'ai fait.Allez, on va remplacer le TAB.Est-ce qu'il va détecter aussi, là ?
00:43:08 :Parce que s'il ne le détecte pas dans le CSV...Je ne suis pas sûr qu'il détecte les TAB dans le CSV, en fait.Oui.Mais on va tenter.
00:43:16 :Sinon, il faut mettre le code...Enfin, le CHR de neuf.Je ne suis même pas sûr que dans le fichier texte,il prenne réellement en compte les tabulations.
00:43:28 :Enfin, on va voir.Le code ASCII.Non, ça ne marche pas.Au pire.Ça se tente.Ça, par contre, je vais rebondir là-dessus.N'hésitez pas.
00:43:42 :Pour certains, je sais qu'ils sont plutôt avancés.D'autres sont peut-être encore au début.Quand vous voyez quelque chose en Pythonou quand on vous montre quelque chose lors des mentorats,n'hésitez pas à avoir cet esprit-làet à jouer avec les différentes commandes.
00:43:58 :Si vous vous dites,tiens, est-ce que ça marcherait avec telle versionou avec telle variableou avec tel caractère ou tel paramètre,faites l'essai.Allez-y, je vous y encourage.
00:44:08 :C'est comme çaque vous allez vraiment bien appréhenderles différents moduleset les différentes fonctionnalités de Python.Et c'est aussi comme çaque vous allez maîtriser de mieux en mieux l'outilpuisque vous allez forcément vous rendre compte,tiens, ok, maintenant je sais qu'avec le CSV,là, on a eu ce soir,
00:44:22 :avec une tabulation, ça ne marche pas.Si je ne mets pas...pour faire mon emplacement comme j'ai fait dans le dictionnaire,tiens, avec une compression dictionnaire,ça marche mieux qu'avec une boucle.
00:44:32 :Enfin, on peut imaginer plein de choses comme ça.Il ne faut surtout pas hésiter,surtout sur des petits scripts comme ça,à faire des essais.
00:44:40 :Manipulez les variables,comparez les résultats,et c'est là que vous allez vraiment bien, bien appréhendertous les moduleset toutes les fonctionnalités de Python.Yes.
00:44:53 :Surtout pour ceux qui préparent le Toza,plus vous aurez fait ça,et plus le jour de l'examen,vous ne serez vraiment pas surprisparce quequel que soit le type de data qui vous donne à traiterou le type de fonctionnalitéspour lesquelles vous demanderez de faire quelque chose,
00:45:11 :à partir du moment où vous avez pris le temps de, justement,de bien tordrele module en questionou la méthode en question,tout de suite,les données, vous allez en faire abstractionparce que vous êtes vraiment concentré sur votre trucet vous savez exactementquelle méthode ou quel module utiliser
00:45:28 :et qu'est-ce que vous allez obtenir comme résultat.Et là, vous n'êtes plus sur le questionnement dec'est parce que ma data a telle valeur ou telle valeur,vous savez le comportement qu'il asurtout face à différents types de valeurset donc vous savez pertinemmentquel résultat vous allez avoir.
00:45:42 :Donc ça, jouez, jouez, jouezet n'hésitez pas.Vous allez déclencher tout un tas d'erreurs en Python,ce n'est pas grave,les erreurs restent à la fusion terminaleaprès son parti.
00:45:51 :Est-ce qu'il y a d'autres petites questionsou d'autres expériences avec le CSVpuisque je vous sens aventurier ce soir ?Oui.Moi, ça va.C'est bon, vous avez décidé d'arrêterde faire souffler mon ordinateur ?
00:46:13 :Je pense qu'on a encore besoin.Comme je ne lâche pas facilement l'affaire,je suis sur Stack Overflow,je rebondis sur la rechercheet a priori, le Replace devrait fonctionner.
00:46:29 :Je ne comprends pas pourquoi.Enfin, il y en a qui disent que ça fonctionne,je ne comprends pas pourquoi notre test ne fonctionne pas.Stack Overflow, c'est bien.
00:46:38 :Oui, c'est bien, oui.Mais avec modération.Voilà.Je dirais que c'est bien,vous pouvez rebondir sur plein de choses ce soir.À minuit, on est encore en mentorat,mais ce n'est pas grave.
00:46:53 :Ça, c'est un peu comme ChatGPT,c'est une discussion que j'ai eueavec mon collègue de ce matin.C'est des outils qui sont très bien.Maintenant, prenez-les pour ce qu'ils sont.
00:47:03 :C'est juste une source d'informationset un guide pour vous aider à résoudre vos problèmes.C'est-à-dire qu'il ne faut pas forcémentprendre tout ce que vous avez trouvédans Stack Overflow ou d'autres sitespour avoir l'argent comptant.
00:47:19 :Et j'en reviens à ce que je vous disais avant,manipuler, manipuler par vous-même.C'est là que vous allez vraiment comprendre le truc.Pour vous donner un exemple,je suis en train de bosser sur un site.
00:47:35 :J'ai dû utiliser un petit peu de Javascriptavec le site en question.J'ai suivi la formation Javascript complète.Ça ne veut pas dire que je maîtrise pour autant Javascript.
00:47:48 :Mais au moins, quand je demande pour les petits bouts de Javascriptdont j'ai besoin, de l'aide de l'IA,de JVPT, GitHub Copilot ou autre,quand ils me proposent quelque chose,c'est en mesure de me rendre comptesi effectivement de comprendre ce qu'il se passe.
00:48:01 :De voir si c'est bien ce que j'attends.Mais parce que j'ai pris le temps de regardercomment fonctionnait Javascript.Et donc pour Stack Overflow et l'IA,et surtout en rapport avec Python,puisque c'est vraiment ce qui nous intéresse tous,tant que vous n'avez pas maîtrisé votre sujet,vous n'êtes pas amusé à tordre le bras
00:48:21 :à la méthode ou au module,pour voir comment il réagit,on va vous proposer des belles lignes de code.Vous allez dire, putain le mec c'est vachement complexe,il doit franchement connaître tout ce qu'il fait et tout.
00:48:32 :Mais en fin de compte,si vous faites un copier-coller, vous faites play,là vous avez 15 erreurs qui s'alignent.C'est ça.Ça se sent le vécu là.
00:48:39 :Oh, j'en ai vu.Je l'ai fait aussi.Je suis joueur.Donc faites gaffe.Et puis après,là par principe,ça reprend de ma casquette cybersécurité,copier-coller un code qu'on a trouvé sur le net,si on ne maîtrise pas de A à Z de ce qu'il fait,là on est vraiment aventurier.
00:48:59 :Sur quelques dizaines de lignes de code,les chances sont limitées.Si vous commencez à couper et copier-couler du codebeaucoup plus important,vous prenez le risquequ'il y a peut-être un petit truc qui ait glissé dans le lot,une petite commande,et puis si vous ne maîtrisez pas exactement tout ce qui est marqué,
00:49:14 :vous avez une petite surprise à la fin.Donc ça, c'est la petite notion.Attention, n'ayez peur,la cybersécurité veille.Voilà, voilà.Bon, est-ce qu'il y a d'autres questions ?
00:49:34 :Non, c'est bien.Merci pour l'animation, pour l'exposé.Merci, enfin le mentorat.Merci, c'est bien.Surtout les dictes,moi je ne connaissais pas du tout,donc merci encore.
00:49:49 :Pareil.De toute façon,sur la formation,la docstring,on voit le JSON,mais pas du tout le CSV.Du coup, c'est cool.Après voilà,c'est quand même très proche,vous avez vu.
Aucune occurrence trouvée pour « ».
00:00:39
Introduction au format CSV
00:01:14
Structure d'un fichier CSV
00:02:06
Utilisation d'un lecteur CSV en Python
00:05:51
Création et lecture de fichiers CSV avec le module Python CSV
00:13:31
Écriture de fichiers CSV en Python
00:18:38
Écriture de fichiers CSV avec des dictionnaires
00:25:22
Gestion des délimiteurs dans les fichiers CSV
00:41:09
Conseils et questions diverses