Les chaines de caractères en Python
Présentation des chaînes de caractères (ou string)
Les chaînes de caractères contiennent du texte, c’est à dire une succession de caractères, le plus souvent des lettres (mais ça peut aussi être un espace, un point d’interrogation, un emoji, la liste des caractères possibles est longue !).
Une chaîne de caractères, c’est au final un peu comme un tableau où chaque élément est un caractère. Ainsi, on pourra utiliser certaines propriétés du tableau, comme par exemple [37]
pour accéder au 38ème élément, ou len()
pour trouver la taille de la chaîne !
Construire des chaînes de caractères
Création d’une chaîne de caractère
Afficher une chaine de caractères : Pour créer une chaine de caractères, ton texte sera forcément mis entre des guillemets.
Chaine vide : Tu peux créer une variable et stocker dedans une chaine de caractère vide.
Variable ayant pour valeur une chaine de caractères :
- Stocke dans ta variable la valeur de texte que tu veux, qui doit être entre guillemets.
- Print() le nom de ta variable pour voir le résultat en console
Rassembler (« concaténer ») des chaînes différentes
Python est capable d’ajouter 2 chaines de caractères ensemble. On appelle ça la concaténation.
Concaténer une variable et une string :
- Tu peux ajouter une string + ta variable.
- Attention : ta string doit contenir les espaces nécessaires pour faire une vraie phrase. Sinon quand tu vas print(), tu vas voir que Bonjour est collé à Guillaume
Avec plusieurs variables :
- Tu peux concaténer autant de chaines de caractères que tu le souhaites.
- Cependant tu vas devoir ajouter une chaine de caractères avec un espace pour que tes variables ne soient pas collés !
Rassembler (« concaténer ») une chaine de caractères et un nombre
Python ne peut pas concaténer une chaine de caractères (string) avec un nombre (integer).
Tu vas devoir transformer tes nombres -> en string
Concaténer une chaine de caractères et un nombre :
Utilise la méthode str() pour que python transforme ton nombre en « string »
Se débuguer et lire la console :
Si tu oublies la méthode str() sur ta concaténation avec un nombre, la console d’erreur te dira exactement quoi faire.
Le TypeError te rappellera que Python peut seulement concaténer des strings vers des strings, et non des integers.
Transformer une chaine de caractères en nombre
On peut parfois avoir besoin de faire l’inverse, et transformer une chaine de caractères en nombre. On va utiliser la méthode int()
Dans cet exemple ci dessous, la variable « age » stocke une chaine de caractères.
Avec l’utilisation de l’input, on attend que l’utilisateur entre son âge. Vu que la variable est en string, elle va convertir l’entrée de l’utilisateur comme telle. Si il met « 12 », dis toi que le programme comprendra « douze » comme une phrase.
Si on veut comparer l’âge de l’utilisateur, pour savoir si il a moins de 18 ans, on va faire une opération mathématique, il faut donc transformer la variable en nombre, grâce à la méthode int()
Se débuguer et lire la console :
Si tu oublies la méthode int() sur ton opération mathématique, la console d’erreur te dira exactement quoi faire.
Le TypeError te rappellera que Python ne peut pas comparer une chaine de caractères (str) avec un nombre (int).
Manipuler les chaînes de caractères
En Python, on va modifier très souvent des chaînes de caractères. Il existe des méthodes natives de Python, qui permettent de faire facilement des modifications classiques.
Il existe de très nombreuses méthodes pour faire ces modifications, tu peux en trouver une liste complète sur la documentation python (en français !). Voici une petite sélection des plus pratiques
Remplacer un mot par un autre :
On utilise la méthode replace() pour cela.
- La premier argument en paramètre est le mot que tu cibles et veux changer
- Le second argument est celui que tu veux mettre à la place.
Ca marche aussi, si tu veux remplacer une seule lettre par une autre. Essaye !
Remplacer en minuscules ou majuscules :
Tout mettre en minuscule :
- On utilise la méthode lower()
(pratique quand on demande à l’utilisateur de deviner un mot ! )
Tout mettre en majuscule :
- On utilise la méthode upper()
Diviser une phrase en plusieurs mots
La méthode split() permet de diviser une phrase en plusieurs mots, ou plusieurs parties. On va choisir comment on souhaite la diviser.
La méthode split() sans argument entre les parenthèses, va séparer les mots de la phrase en ciblant les espaces que l’on y trouve dedans.
La méthode split() avec un argument, permet de cibler le caractère que tu vises pour la séparation de tes mots.
Ici on sépare par les / . C’est un caractère, donc dans la méthode, tu le mets entre guillemets -> split(« / »)
Manipuler des caractères comme dans un tableau
Visualise les chaînes de caractères comme des tableaux de caractères :
- Par exemple « bonjour » est un tableau, dont on a en premier le b, en second le o, en 3ème le n, etc…
On peut donc aussi accéder à un seul caractère, voir le remplacer, comme avec un tableau.
Pour cela, on fait appelle à ce que l’on appelle les index. Voici de quoi les comprendre et les visualiser
Attention : en programmation, l’index commence toujours par le chiffre « 0 »
Accéder à un caractère
Récupérer le premier caractère :
on utilise toujours l’index [0]
Récupérer le quatrième caractère :
Puisque l’index commence par [0], la quatrième caractère appelle l’index [3].
Les méthodes d’informations sur un caractère
Les chaînes de caractères fonctionnent exactement comme les tableaux, on peut accéder à un caractère précis, et ajouter une méthode native de Python pour avoir des informations, le transformer, etc..
La méthode isalpha() vérifie si le caractère est une lettre alphabétique (pas un espace, un caractère spécial, ou un chiffre).
- Si c’est une lettre de l’alphabet, il renverra True, sinon False.
La méthode isupper() vérifie si le caractère est en majuscule.
- Renvoie également True, ou False.
La méthode islower() vérifie si le caractère est en minuscule.
- Renvoie également True, ou False.
NOTE : On voit ci dessus ces 3 méthodes pour viser un seul caractère, mais on peut les appeler sur une chaine de caractères entière également.