Du texte, mais avec des méthodes
Une chaîne Python est une séquence de caractères, et tu utiliseras les chaînes plus que n'importe quel autre type. Chaque nom, étiquette, message, URL, chemin de fichier et réponse d'API vit dans une chaîne à un moment donné.
Créez-en une avec des guillemets — simples, doubles ou triples :
Les guillemets simples et doubles sont interchangeables. Utilise celui qui t'évite d'avoir à échapper un caractère. "don't" est propre ; 'don\'t' a besoin d'une barre oblique inverse.
Les chaînes sont immuables. Une fois qu'une chaîne existe, tu ne peux pas en modifier un caractère sur place. Chaque opération qui semble changer une chaîne renvoie en fait une nouvelle. C'est pour ça que tu écriras text = text.upper() plutôt que juste text.upper() — sans la réaffectation, la nouvelle chaîne en majuscules serait jetée.
Joindre et répéter
Deux opérateurs font la plupart de la combinaison de chaînes dont tu auras besoin :
+ concatène les chaînes. * répète une chaîne. Les deux renvoient une nouvelle chaîne.
Concaténer beaucoup de morceaux avec + devient vite moche. Quand tu mélanges des valeurs de types différents dans un message, utilise plutôt des f-strings — voir la section suivante.
f-strings : la façon dont tu formateras d'habitude
Mets un f devant le guillemet d'ouverture et la chaîne devient un template. Tout ce qui se trouve dans {...} est remplacé par la valeur de cette expression :
Tu peux mettre n'importe quelle expression entre les accolades — variables, arithmétique, appels de méthode, appels de fonction. Garde-les simples, cependant ; si tu es tenté de caser un calcul de trois lignes dans {...}, calcule-le d'abord dans une variable nommée.
Les f-strings prennent aussi en charge des spécificateurs de format après un deux-points, pour contrôler le formatage des nombres, le remplissage et l'alignement :
Ces specs de format sont les mêmes que celles utilisées par str.format() et valent une lecture rapide une fois que tu es à l'aise avec les bases. Tu n'en as pas besoin pour du code de premier jour.
Découpage : prends un morceau
Les chaînes sont indexables comme des séquences. Chaque caractère a une position indexée à partir de zéro, et tu peux attraper un caractère ou une plage :
Le motif [start:stop:step] se retrouve aussi dans les listes et autres séquences, donc investir quelques minutes pour l'intérioriser paie partout.
Deux choses à souligner :
- L'indice
stopest exclusif :word[0:2]inclut les indices 0 et 1, pas 2. - Les indices négatifs comptent depuis la fin :
-1est le dernier caractère,-2l'avant-dernier, et ainsi de suite.
Comment inverser une chaîne
Les chaînes n'ont pas de méthode .reverse() — elles sont immuables — mais le découpage avec un pas de -1 fait le travail en une ligne :
word[::-1] se lit « du début à la fin, pas à reculons de 1 ». Le résultat est une toute nouvelle chaîne ; l'original reste intact. Si tu as besoin d'itérer les caractères à l'envers sans matérialiser une nouvelle chaîne, reversed(word) renvoie un itérateur paresseux.
Comment vérifier la longueur d'une chaîne
len(text) renvoie le nombre de caractères :
Note que len compte les points de code Unicode, pas les octets. len("café") vaut 4, pas 5, même si l'encodage UTF-8 prend plus d'octets — c'est généralement ce que tu veux.
Comment vérifier si une chaîne contient une sous-chaîne
L'opérateur in est le test idiomatique, et il se lit comme de l'anglais :
Pour des tests insensibles à la casse, normalise les deux côtés d'abord :
Si tu as besoin de la position, pas juste d'un oui/non, utilise .find() — elle renvoie l'indice ou -1 si la sous-chaîne n'est pas là.
Méthodes de chaîne courantes
Les chaînes ont des dizaines de méthodes. Tu utiliseras cette poignée sans arrêt :
Découper et joindre :
.split(separator) transforme une chaîne en liste. separator.join(list_of_strings) la recolle. Ces deux méthodes portent une part disproportionnée du travail réel sur les chaînes.
Encore une paire utile :
C'est un parseur pour une entrée de config d'une seule ligne, écrit en trois lignes. Petites chaînes, grand effet de levier.
Vérifier ce qu'il y a à l'intérieur
Plusieurs méthodes renvoient des booléens, utiles dans des conditions if :
Utilise-les avec parcimonie — elles ne gèrent pas les bizarreries Unicode de toutes les façons que tu pourrais attendre. Pour tout ce qui dépasse l'ASCII, appuie-toi sur le module regex ou le module unicodedata.
Échapper les caractères spéciaux
Certains caractères ont besoin d'une barre oblique inverse pour apparaître à l'intérieur d'une chaîne :
Si tu écris des chemins Windows ou des regex, les chaînes brutes (raw strings) te facilitent la vie. Mets un r devant le guillemet et les barres obliques inverses cessent d'être des caractères d'échappement :
Les chaînes sont partout, alors garde ça lisible
Trois habitudes qui empêchent le code à base de chaînes de tourner à la soupe :
- Utilise les f-strings pour l'interpolation. N'enchaîne pas les
+à travers plusieurs types. - Réaffecte quand tu « mutes ».
text = text.strip(), pastext.strip()tout seul. - Tends la main vers
.split()et.join()avant d'écrire des boucles manuelles pour parser ou assembler du texte. Elles sont plus rapides, plus claires et plus difficiles à rater.
Ensuite : les f-strings en profondeur — l'outil de formatage que tu as déjà vu une poignée de fois, plus les specs de nombres et de dates qui les rendent utiles à maîtriser.
Questions fréquentes
Qu'est-ce qu'une f-string en Python ?
Une f-string est un littéral de chaîne préfixé par f, où tout ce qui se trouve à l'intérieur de {...} est remplacé par la valeur de cette expression. Exemple : f"Hello, {name}!" insère la valeur actuelle de name dans la chaîne à l'exécution.
Comment inverser une chaîne en Python ?
Utilise le découpage avec un pas de -1 : reversed_text = original[::-1]. Ça renvoie une nouvelle chaîne faite des mêmes caractères dans l'ordre inverse. La chaîne d'origine reste intacte car les chaînes en Python sont immuables.
Comment découper une chaîne en Python ?
Appelle .split() sur la chaîne. Sans argument, elle découpe sur n'importe quel espace blanc : "a b c".split() renvoie ['a', 'b', 'c']. Tu peux passer un séparateur précis : "a,b,c".split(",") renvoie ['a', 'b', 'c'].
Les chaînes Python sont-elles mutables ?
Non. Les chaînes sont immuables — une fois qu'une chaîne existe, tu ne peux modifier aucun de ses caractères sur place. Chaque méthode qui « change » une chaîne renvoie en fait une nouvelle. C'est pour ça que tu vois des motifs comme text = text.strip() — tu réaffectes la variable à la nouvelle chaîne.
Comment concaténer des chaînes en Python ?
Utilise + pour joindre deux chaînes : "hello" + " " + "world". Pour combiner une valeur dans une phrase, préfère une f-string : f"Hello, {name}". Pour joindre plusieurs morceaux depuis une liste, utilise separator.join(pieces) — c'est plus rapide et plus lisible que des + enchaînés.
Comment vérifier la longueur d'une chaîne en Python ?
Appelle la fonction intégrée len(text). Elle renvoie le nombre de caractères (points de code Unicode), donc len("café") vaut 4. Pour la longueur en octets, encode d'abord : len(text.encode("utf-8")).