Apprendre Python - Les chaînes de caractères

Dans cette leçon vidéo, le formateur explique en détail le type de données chaîne de caractères en Python. Il commence par rappeler que les chaînes sont des séquences Unicode, sans limite de longueur, et que chaque caractère provient d’un encodage Unicode (avec un renvoi à une vidéo sur l’ASCII). Il montre comment obtenir le type (class str) et la longueur avec len, puis décrit l’accès par indice, l’immuabilité des chaînes et les conséquences d’une tentative de modification. Le cours couvre le slicing (début, fin, indices négatifs, pas, inversion) et compare ces opérations aux listes. Ensuite, il passe en revue les méthodes de chaîne les plus courantes : conversion de casse (upper, lower, capitalize), recherche (index, find, count, opérateur in), nettoyage (strip), découpage (split) et recombinaison (join), ainsi que le remplacement (replace). Chaque méthode est illustrée par des exemples concrets. Enfin, il réalise un exercice pratique : demander une phrase à l’utilisateur, la découper, comparer chaque mot à une liste de mots interdits, et remplacer les mots trouvés par des astérisques en utilisant lower, len, la répétition d’astérisques et join. Le formateur conclut en rappelant que ces méthodes suffisent pour créer des programmes fonctionnels avec des chaînes de caractères.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon sur le langage de programmation Python. Aujourd'hui, nous allons voir les chaînes de caractères. Nous avons déjà vu les chaînes de caractères à plusieurs reprises auparavant, soit en tant que type associé à une variable ou en tant qu'argument des fonctions print et input. En effet, une chaîne de caractères est avant tout un type de données. Comme c'est le cas pour les entiers ou les réels par exemple. Une variable de type chaîne de caractères peut accueillir n'importe quelle séquence de caractères, donc un prénom, une adresse email, un titre d'article ou l'article lui-même, tous peuvent être stockés dans une variable de type chaîne de caractères. A priori, il n'y a pas de longueur maximale pour une chaîne, donc elle peut être constituée de n'importe quel nombre de caractères. En plus, il n'y a pas que des caractères latins qui y sont permis, mais pratiquement tous les caractères connus de toutes les langues existantes, ainsi que des chiffres et symboles. Même les émoticônes peuvent être placés dans une chaîne de caractères. Je ne vais pas traiter les détails techniques derrière les chaînes de caractères, en l'occurrence l'encodage, mais je peux vous recommander ma vidéo sur l'encodage ASCII où j'ai expliqué comment les caractères sont codés par un ordinateur. Bien entendu, ce n'est pas le code ASCII qui est utilisé par les langages de programmation modernes, y compris Python, mais un autre système connu sous le nom d'Unicode. Cependant, la compréhension de l'ASCII pourrait vous aider à comprendre comment un ordinateur traite une chaîne de caractères. Supposons que nous avons initialisé la variable v avec la valeur Bonjour. Le fait d'afficher le type de la variable donne class str pour dire chaîne de caractères. Si on veut connaître de combien de caractères notre chaîne est constituée, alors on utilise la fonction len. L'interpréteur indique que la longueur de notre chaîne de caractères vaut 7, Donc elle est constituée de 7 caractères. Vous avez sans doute reconnu la fonction len. En effet, c'est la même fonction que nous avons utilisée pour connaître la longueur d'une liste. En réalité, une chaîne de caractères n'est rien d'autre qu'une liste de caractères. En effet, une chaîne fait aussi partie des séquences. Donc bien que pour nous la chaîne v ne soit qu'un simple mot, elle est en fait une séquence constituée de caractères, et plus précisément une liste de caractères, et on peut par conséquent accéder à n'importe lequel de ces derniers en spécifiant sa position ou son indice entre crochets. Exactement comme pour les listes conventionnelles comme ceci: v fait référence à B, car le caractère B est situé à la position 0 de la soi-disant liste de caractères qui n'est rien d'autre que la variable v, et v indique la lettre R, donc le dernier caractère de la liste. La différence majeure entre une liste ordinaire et une chaîne de caractères est que cette dernière est une liste immuable, on dit aussi immutable. Cela signifie qu'on ne peut pas modifier un élément de la chaîne comme on le fait pour la liste ordinaire. Par exemple, l'instruction suivante essaie de changer le caractère à la position 0. C'est comme si on essaie de remplacer le B majuscule par un b minuscule, sauf que l'interpréteur ne permet pas cette opération et par conséquent on a une erreur. Certaines fonctionnalités applicables aux listes sont également applicables aux chaînes de caractères comme le slicing. Si on met v:, alors on commence au premier caractère et on finit au dernier, donc on obtient la chaîne entière. Si on fait v , alors on obtient une partie de la chaîne qui commence à la position 3, donc à la lettre J, et qui va jusqu'à la fin de la chaîne, ce qui donne Jour. Et si on met v , alors on obtient le morceau qui commence à la position négative -4, qui correspond encore à la lettre J, et qui finit à la position -2, donc on obtient Joue. On peut également appliquer le pas du slice. Par exemple, si on fait v::-1, Alors on obtient toute la chaîne mais inversée, car on a spécifié le pas de slice à -1. Encore une fois, je vous renvoie vers la vidéo sur les listes pour plus de détails sur le slicing. Maintenant, nous allons explorer les méthodes les plus importantes associées aux chaînes de caractères. Figurez-vous que l'on va considérer notre chaîne comme étant une variable normale, et non pas une liste. Les méthodes upper et lower permettent respectivement de convertir la chaîne de caractères en majuscules et en minuscules. Il y a aussi la méthode capitalize qui convertit la première lettre de la chaîne en majuscule et tout le reste en minuscule. Les méthodes index et count que nous avons déjà vues dans les listes sont aussi applicables aux chaînes. La méthode index renvoie la position ou l'indice du caractère passé en argument. Il est possible de spécifier une chaîne en guise d'argument et non seulement un caractère. Dans ce cas, l'interpréteur retourne la position de la première occurrence dans la chaîne qui correspond à l'argument de la méthode. Je rappelle que Python est sensible à la casse, donc il différencie les caractères minuscules des majuscules lors de la recherche. La méthode count retourne le nombre de fois que le caractère passé en argument apparaît dans la chaîne. Comme c'est le cas pour la méthode index, la méthode count accepte aussi une chaîne en guise d'argument. La méthode find fait presque la même chose que la méthode index, c'est-à-dire elle retourne la position du caractère ou chaîne de caractères passée en argument, sauf que find retourne -1 si l'occurrence recherchée ne figure pas dans la chaîne. Bien entendu, si on veut simplement vérifier si une occurrence existe dans la chaîne, alors on peut utiliser l'opérateur d'appartenance in comme pour les listes. Je rappelle que l'opérateur in s'applique aux séquences. La méthode strip supprime les espaces de début et de fin de la chaîne. En effet, il est souvent utile de procéder à cette suppression dans les chaînes de caractères saisies par l'utilisateur avant de les traiter, car il arrive souvent que des espaces sont ajoutés aux extrémités de la chaîne souvent par inattention ou à cause d'un copier-coller. En plus, on sait que les espaces des extrémités sont inutiles, donc autant les supprimer. Notez que les espaces du milieu de la chaîne ne sont pas concernés par cette suppression. Notez aussi qu'il est possible de chaîner les méthodes les unes après les autres comme ceci: Dans ce cas, les méthodes s'appliquent de gauche à droite, c'est-à-dire qu'on supprime d'abord les espaces inutiles à l'aide de Strip, ensuite on convertit la chaîne retenue en majuscule à l'aide de Upper, et enfin on cherche dans la chaîne résultante le caractère R à l'aide de Find. L'une des méthodes les plus populaires est la méthode split. Cette méthode permet de diviser la chaîne de caractères en plusieurs morceaux et placer chaque morceau dans une liste. Par exemple, si on fait ceci, on obtient une liste que l'on affiche à l'aide de la fonction print. Cette liste contient 3 champs. En effet, on a renseigné dans la méthode split le caractère o, donc l'interpréteur divisera la chaîne Bonjour au niveau des lettres o qu'elle contient. Et il y en a 2, donc on obtient 3 morceaux et qui sont B, NJ et UR. Split est souvent utilisé pour diviser un texte au niveau des espaces blancs qu'il contient. Notez qu'on désigne par espaces blancs les espaces ordinaires, les tabulations et les retours à la ligne. La notion d'espace blanc peut s'étendre à d'autres éléments selon le domaine auquel on a affaire. Si on ne spécifie aucun argument dans la méthode split, alors elle divisera le texte au niveau des espaces blancs. Prenons cet exemple: On initialise la variable v avec la chaîne Bonjour à tous. Ensuite, on affiche la liste résultante en appliquant la méthode split, sans spécifier d'arguments. Cela sous-entend que l'on divise la chaîne au niveau des espaces blancs. Sans surprise, on obtient 3 fragments dans la liste et qui sont Bonjour, à et tous. Maintenant, si on remplace un espace dans la chaîne par plusieurs espaces ou des tabulations, le résultat ne changera pas. Et si on place un saut de ligne explicite à l'aide du mot-clé anti-slash n, alors la méthode split divisera notre chaîne au niveau de cette occurrence aussi. La méthode qui fait l'inverse de split s'appelle join. En effet, cette méthode s'applique à une liste et il en résulte une chaîne de caractères constituée des éléments de cette liste-là en les espaçant par un caractère ou suite de caractères de notre choix. À titre d'exemple, Nous initialisons une liste nommée lst avec les valeurs a, b et c. Nous allons maintenant appliquer la méthode join à notre liste comme ceci. Cette écriture signifie que l'on prendra tous les éléments de la liste lst passée en argument de join et on placera le caractère tiret entre eux, ce qui donnera une chaîne de caractères qui a la valeur a-b-c. La méthode replace, et comme son nom l'indique, permet de remplacer une occurrence par un caractère ou une chaîne de caractères de notre choix dans la chaîne d'origine. Si on suppose que l'on a affecté la chaîne Bonjour à la variable v, alors le fait de lui appliquer la méthode replace avec les 2 arguments Jour et Soir va chercher l'occurrence Jour dans la chaîne et la remplacer par Soir, donc on affiche Bonsoir. Pour finir, nous allons faire un exemple. Imaginez que l'on souhaite demander à l'utilisateur de saisir une chaîne de son choix. Nous allons ensuite vérifier si cette chaîne ne contient pas des mots parmi ceux qu'on a déjà spécifiés dans une liste. Si ça se trouve que l'un de ces mots-là figure dans la liste saisie, alors on la remplace par des astérisques. Cela nous rappelle un filtre anti-insultes qui est souvent utilisé dans les forums de discussion ou les systèmes de tchat afin de masquer les mots offensants. Dans notre cas, il s'agit simplement d'un filtre des noms prédéfinis. Disons par exemple que ce sont des noms de langages de programmation. À titre d'exemple, si l'utilisateur saisit: Actuellement Python et JavaScript sont très sollicités dans le marché du travail. Alors on affichera à l'écran: Actuellement,* et* sont très sollicités dans le marché du travail. Donc, nous avons remplacé Python par autant d'astérisques qu'il y a de lettres dans le mot, et pareil pour JavaScript. On commence par définir notre filtre, c'est-à-dire la liste des mots à remplacer s'ils figurent dans le texte saisi par l'utilisateur. On appellera cette liste filtre, et pour faire simple, on va y lister juste quelques noms pour l'exemple. Mais vous pouvez l'étendre comme vous voulez. Ensuite, on demande à l'utilisateur de saisir une phrase de son choix, que l'on stocke dans la variable identifiée par phrase. Après, on divise la chaîne phrase via la méthode split au niveau des espaces blancs. Les mots résultants sont stockés dans la variable lst. On parcourt la liste lst à l'aide de la boucle For. Cette fois, j'ai opté pour parcourir la liste à travers les indices et non pas à travers les valeurs, comme on l'a vu dans la vidéo sur les listes. Pour chaque mot de la liste lst et qui correspond à lst , on vérifie son existence dans la liste filtre à l'aide de l'opérateur d'appartenance in. Puisqu'on veut vérifier si les mots de la phrase figurent dans la liste filtre, il faut s'assurer que les deux textes sont écrits avec la même casse. Par exemple, si l'utilisateur écrit Python avec un P majuscule, alors ce mot ne correspond pas à la chaîne Python avec un p minuscule que nous avons placée dans la liste filtres. Donc, il faut faire en sorte d'appliquer la même casse partout. Nous allons opter pour transformer les mots de la phrase en minuscule puisque les mots de la liste filtres sont déjà en minuscule, d'où l'utilisation de la méthode lower. Maintenant, si le mot courant figure dans la liste, alors il faut la remplacer par les astérisques. Donc, on modifie l'entrée lst en la remplaçant par des astérisques en utilisant l'opérateur de répétition. En effet, on répète l'astérisque autant de fois qu'il y a de caractères dans le mot courant représenté par lst . Ce nombre de répétitions correspond donc à len . À la fin de la boucle, on reconstitue la chaîne de caractères à afficher à partir des mots de la liste lst en appliquant la méthode join et en utilisant l'espace comme séparateur. Il existe encore pas mal de méthodes applicables aux chaînes de caractères, mais celles que nous avons vues sont suffisantes pour réaliser des programmes fonctionnels. Merci pour votre attention et à la vidéo prochaine.
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









