Manipuler les chaînes de caractères en Python

Apprends à manipuler du texte en Python. Accède à n’importe quel caractère ou partie d’une chaîne avec les indices et les tranches, parcours du texte pour compter, chercher et construire de nouvelles chaînes, et découvre pourquoi une chaîne ne peut jamais être modifiée en place. Utilise les méthodes de chaîne pour changer la casse, nettoyer les saisies, rechercher, tester, découper et assembler du texte. Termine en mettant en forme l’affichage avec des f-strings : nombres arrondis, séparateurs de milliers, pourcentages, dates et heures au format américain et colonnes bien alignées.

DébutantUnité 5 sur 10 de la formation Formation : Python : variables, boucles, fonctions et fichiers

Ce que tu vas apprendre

  1. Écris des littéraux de chaîne, mesure et combine des chaînes, puis utilise des indices et des tranches pour accéder à n’importe quel caractère ou partie d’un texte.
    • Écrire des littéraux de chaîne et combiner des chaînes
      Crée des chaînes avec des guillemets, des séquences d’échappement et des guillemets triples, trouve leur longueur avec len() et combine-les avec + et *.
    • Extraire un caractère par son indice
      Utilise des indices positifs et négatifs pour lire n’importe quel caractère d’une chaîne, et évite les erreurs de décalage d’une unité et les erreurs dues aux chaînes vides qui lèvent IndexError.
    • Extraire des parties d’une chaîne par tranches
      Extrais des sous-chaînes avec [start:stop] et [start:stop:step], utilise des positions omises ou négatives et prévois exactement quels caractères une tranche contient.
  2. Parcours une chaîne pour compter, rechercher et construire du texte, en tenant compte du fait que ses caractères ne peuvent jamais être modifiés en place.
    • Parcourir les caractères d’une chaîne
      Parcours chaque caractère avec des boucles for et while, utilise les positions lorsqu’elles comptent et applique au texte les schémas de comptage, de recherche et d’accumulation.
    • Construire de nouvelles chaînes au lieu de modifier les anciennes
      Explique ce que signifie l’immuabilité des chaînes et produis un texte modifié en utilisant des tranches, la concaténation et la réaffectation.
  3. Appelle des méthodes de chaîne pour changer la casse et nettoyer du texte, trouver et compter des sous-chaînes, et vérifier le contenu d’une chaîne avant de l’utiliser.
    • Changer la casse et nettoyer du texte avec des méthodes
      Appelle des méthodes avec la notation pointée pour changer la casse, supprimer des caractères indésirables, remplacer du texte et remplir des chaînes, puis chaîne plusieurs méthodes.
    • Rechercher du texte dans une chaîne
      Vérifie si une sous-chaîne est présente, trouve où elle commence, compte ses occurrences et utilise les positions trouvées pour extraire du texte.
    • Tester et comparer des chaînes
      Vérifie par quoi une chaîne commence, par quoi elle se termine ou de quoi elle est composée, valide une saisie avant de la convertir et prévois comment Python compare et classe les chaînes.
  4. Découpe une ligne de texte en mots ou en champs avec split(), puis réunis les éléments en une chaîne avec join().
    • Découper une chaîne en une liste de parties
      Utilise split() avec et sans séparateur, limite le nombre de découpages et transforme les parties d’une ligne en valeurs dont un programme a besoin.
    • Assembler des chaînes avec un séparateur
      Combine plusieurs chaînes en une seule avec join(), choisis le séparateur, convertis d’abord les éléments qui ne sont pas des chaînes et associe split() à join() pour modifier la forme du texte.
  5. Construis un affichage clair en insérant des valeurs dans du texte avec des f-strings, en mettant en forme les nombres, les dates et les heures pour les lecteurs et en alignant les résultats en colonnes.
    • Insérer des valeurs dans du texte avec des f-strings
      Écris des f-strings qui insèrent les valeurs de variables et d’expressions dans du texte, et reconnais les anciennes formes avec format() et % dans du code existant.
    • Mettre en forme des nombres, des dates et des heures pour les lecteurs
      Ajoute des spécifications de format pour contrôler le nombre de décimales, l’arrondi, les séparateurs de milliers, les pourcentages, les signes et le remplissage par des zéros, et construis des dates et des heures au format américain.
    • Aligner l’affichage en colonnes
      Définis des largeurs de champ, des alignements et des caractères de remplissage, raccourcis les textes longs et combine ces options pour afficher des tableaux et des reçus bien alignés.

Chaînes de caractères en Python : cours

5 chapitres

1

Créer des chaînes et en extraire des parties

Dans un programme, le texte a un contenu et des positions. Un nom peut contenir une espace, un message peut contenir un saut de ligne et un code peut séparer ses deux premières lettres de son numéro. Tu peux créer ces chaînes, les combiner et sélectionner exactement les caractères dont tu as besoin. Commence par distinguer la façon dont le texte s’écrit en Python de la valeur qu’il contient, puis représente-toi les positions pour prévoir le résultat des indices et des tranches.

1.1 Écrire des littéraux de chaîne et combiner des chaînes

Une chaîne de caractères est une séquence de caractères de type str. Elle peut contenir un nom, une phrase, un code ou aucun caractère. Python conserve les caractères dans l’ordre, y compris les espaces et la ponctuation.

Écrire la valeur entre des guillemets assortis

Les guillemets simples et doubles créent le même type de valeur : 'hello' et "hello" sont égaux. Les guillemets extérieurs marquent les bornes ; ils ne sont pas des caractères de la valeur. Choisis des guillemets qui rendent ceux de l’intérieur faciles à lire :

message = "It's late"
reply = 'She said "yes"'
empty = ""

Dans 'It's late', l’apostrophe ferme la chaîne trop tôt, ce qui provoque une SyntaxError. Les guillemets doubles résolvent ce problème ; tu peux aussi écrire 'It\'s late'. Utilise des guillemets droits dans le code.

Stocker des sauts de ligne et des barres obliques inverses

Une séquence d’échappement commence par une barre oblique inverse. Python lit \n comme un saut de ligne, \t comme une tabulation et \\ comme une barre oblique inverse. Les guillemets échappés, \' et \", insèrent des guillemets dans le texte.

text = "a\nb"
print(len(text))  # 3
print(text)

Le dernier appel affiche a et b sur deux lignes distinctes. La valeur contient trois caractères : a, un saut de ligne et b. Les séquences d’échappement sont traitées lorsque Python lit le littéral. La console affiche une représentation avec des guillemets et les séquences d’échappement nécessaires ; print() affiche les caractères eux-mêmes. Par exemple, "\x41" devient "A", donc la console n’a pas besoin d’afficher la séquence d’échappement d’origine.

Les guillemets triples permettent à un littéral de s’étendre sur plusieurs lignes. Chaque saut de ligne à l’intérieur devient un caractère de saut de ligne :

notice = """Door closed
Use side entrance"""

Une chaîne brute comporte un r avant ses guillemets. Dans r"C:\new", la barre oblique inverse et n restent séparés, ce qui donne six caractères. Dans "C:\new", \n devient un saut de ligne, ce qui en donne cinq. Les littéraux bruts sont utiles lorsque les barres obliques inverses font partie du texte.

Mesurer et combiner du texte

len() compte chaque caractère, y compris les espaces : len("Hi there!") vaut 9, et len("") vaut 0. Plus précisément, cette fonction compte les points de code Unicode. len("café") vaut 4 lorsque é est un seul point de code ; len("👍🏽") vaut 2, même si l’émoji ressemble à un seul symbole.

Utilise + pour concaténer des chaînes et * pour répéter une chaîne :

first = "Ada"
last = "Lovelace"
full = first + " " + last  # "Ada Lovelace"
rule = "-" * 10           # ten dashes

La concaténation n’insère rien automatiquement. Sans " ", les noms deviennent "AdaLovelace". Répéter "ab" zéro fois donne la chaîne vide.

Déterminer si les chiffres sont du texte ou des nombres

Les deux opérandes d’une concaténation de chaînes doivent être des chaînes. "Age: " + 30 lève TypeError ; "Age: " + str(30) donne "Age: 30". À l’inverse, input() renvoie du texte : "3" + "4" donne "34". Pour additionner leurs valeurs numériques, convertis-les d’abord : int("3") + int("4") donne 7.

Points clés

  • Une chaîne stocke une séquence ordonnée de caractères ; ses guillemets extérieurs font partie de la syntaxe.
  • est un seul caractère de saut de ligne, tandis que les littéraux bruts conservent séparément la barre oblique inverse et la lettre qui suit.
  • len() compte les points de code, y compris les espaces et la ponctuation.
  • + assemble des chaînes sans ajouter d’espaces ; * répète une chaîne.
  • Convertis le texte en nombres pour les calculs et les nombres en texte pour la concaténation.

1.2 Extraire un caractère par son indice

Un indice sélectionne un caractère selon sa position. Python commence à compter à zéro : la position d’un caractère est donc inférieure de un à son rang dans un comptage ordinaire depuis la gauche.

Représenter les positions

Pour word = "Python", chaque caractère possède un indice positif ou nul et un indice négatif :

CaractèrePython
Depuis le début012345
Depuis la fin-6-5-4-3-2-1
word = "Python"
print(word[0])   # P
print(word[1])   # y
print(word[-1])  # n

Les crochets après la chaîne sélectionnent le caractère. Le résultat est une chaîne de longueur un : Python n’a pas de type distinct pour les caractères. Tu peux assembler les caractères sélectionnés : word[0] + word[-1] donne donc "Pn".

Pour une longueur n, les indices valides vont de -n à n - 1 lorsque n > 0. Les indices positifs ou nuls comptent depuis le début ; les indices négatifs comptent depuis la fin. L’indice -k sélectionne le même caractère que n - k ; dans ce mot de six caractères, -2 et 4 sélectionnent tous deux "o".

Distinguer la longueur du dernier indice

len(word) vaut 6, mais word[6] lève IndexError : il n’y a pas de septième caractère. Le dernier caractère est word[len(word) - 1], ou simplement word[-1]. Dépasser l’une ou l’autre extrémité provoque une erreur ; word[-7] lève aussi IndexError.

Un indice doit être un entier. word[1.0] lève TypeError, même si le flottant a une valeur entière. Utilise // pour calculer une position centrale :

word = "Pyt"
middle = len(word) // 2  # 1
print(word[middle])      # y

L’opérateur / produirait 1.5, qui ne peut pas servir d’indice dans une chaîne. Pour une longueur impaire, len(word) // 2 sélectionne le caractère du milieu. Pour une longueur paire, il sélectionne celui de droite parmi les deux caractères du milieu : "Python"[3] vaut "h".

Construire des initiales à partir des premiers caractères
first = "Grace"
last = "Hopper"
initials = first[0] + last[0]
print(initials)  # GH

Chaque nom fournit son caractère à l’indice 0. Avec first[-1], tu obtiendrais "e", la dernière lettre. Cette méthode suppose que chaque nom comporte au moins un caractère.

Vérifier une saisie vide avant l’accès par indice

La chaîne vide a une longueur nulle et aucun indice de caractère valide. ""[0] lève IndexError. Une vérification de la longueur peut empêcher un programme de lire un caractère inexistant :

line = input("Comment: ")
if len(line) > 0 and line[0] == "#":
    print("Comment line")

Python évalue and de gauche à droite. Si la vérification de longueur est fausse, il ignore line[0]. Inverser ces deux tests tenterait d’abord l’accès par indice non protégé. Si tu veux seulement savoir si une ligne commence par "#", line.startswith("#") fonctionne aussi sur une saisie vide et renvoie False.

Points clés

  • L’indice 0 sélectionne le premier caractère ; l’indice -1 sélectionne le dernier.
  • Le dernier indice positif ou nul est len(text) - 1.
  • L’accès par indice renvoie une chaîne d’un caractère et lève IndexError pour une position inexistante.
  • Utilise un indice entier et vérifie qu’une saisie n’est pas vide avant de sélectionner un caractère.

1.3 Extraire des parties d’une chaîne par tranches

Une tranche sélectionne une suite de caractères et la renvoie sous forme de chaîne. Elle permet de prendre un préfixe, de supprimer une fin ou de séparer des champs qui occupent des positions fixes.

Le début est inclus ; la fin est exclue

Écris text[start:stop]. Avec s = "Monty Python", s[0:5] donne "Monty", et s[6:12] donne "Python". L’espace est à l’indice 5, donc la deuxième tranche commence à 6.

Imagine que les nombres de la tranche désignent les espaces entre les caractères. L’espace 0 se trouve avant le premier caractère, et l’espace 5 après les cinq premiers. Tout prendre entre les deux donne cinq caractères. Pour 0 <= start <= stop <= len(text), la longueur est stop - start.

word = "Monty"
print(word[0:4])  # Mont
print(word[0:5])  # Monty

La position de fin est la première position exclue. Ajouter un au dernier indice souhaité permet d’inclure ce dernier caractère.

Omettre une borne
TrancheSignificationRésultat pour s
s[:5]Du début jusqu’à la position 4"Monty"
s[6:]De la position 6 jusqu’à la fin"Python"
s[:]Chaîne entière"Monty Python"
s[-6:]Six derniers caractères"Python"
s[:-1]Tout sauf le dernier caractère"Monty Pytho"

À toute position de découpage k, s[:k] + s[k:] redonne s. Les tranches se rejoignent au même espace, sans caractère manquant ni répété.

Les bornes de tranche qui dépassent les extrémités sont ramenées à celles-ci. "cat"[1:100] vaut "at" ; "cat"[5:] vaut "". Pour une tranche parcourue vers l’avant, un début égal ou supérieur à la fin donne une chaîne vide, comme dans s[4:2]. Contrairement à l’accès à un caractère par indice, une tranche hors limites ne lève pas IndexError.

Choisir un pas

Le troisième emplacement dans text[start:stop:step] définit l’écart entre les positions sélectionnées :

letters = "abcdefgh"
print(letters[::2])   # aceg
print(letters[1::2])  # bdfh
print(letters[::-1])  # hgfedcba

Un pas négatif fait avancer à l’envers. Lorsque les deux bornes sont omises, [::-1] commence au dernier caractère et parcourt tous les caractères dans l’ordre inverse. Un pas de zéro lève ValueError. Le sens doit correspondre aux bornes : la règle ci-dessus selon laquelle un début égal ou supérieur à la fin donne un résultat vide s’applique à un pas positif.

Appliquer les tranches à une structure fixe
d = "2026-07-04"
year = d[:4]
month = d[5:7]
day = d[8:10]
print(month + "/" + day + "/" + year)  # 07/04/2026

Les positions fonctionnent parce que cette structure utilise toujours quatre chiffres pour l’année et deux pour le mois et le jour. Un texte dont les champs ont des longueurs variables nécessite une recherche ou un découpage.

L’inversion permet aussi de tester un palindrome : word == word[::-1]. "level" réussit, mais "Level" échoue, car la casse compte. Affecte clean = word.lower() et teste clean == clean[::-1] pour ignorer la casse.

Points clés

  • Une tranche inclut son début et exclut sa fin.
  • Les bornes omises et les positions négatives facilitent la sélection de préfixes et de fins.
  • Les bornes de tranche hors limites sont ramenées aux extrémités ; un pas nul lève ValueError.
  • Un pas négatif parcourt la chaîne à l’envers ; [::-1] inverse toute la chaîne.
  • Les tranches à positions fixes dépendent d’une structure de texte uniforme.
2

Traiter des chaînes caractère par caractère

Une boucle peut examiner chaque caractère, tenir un compte, s’arrêter à la première correspondance ou construire un nouveau message. Les mêmes petits schémas servent à de nombreuses tâches sur du texte : compter les voyelles, trouver un chiffre ou masquer certaines lettres. Les chaînes ont aussi une valeur fixe une fois créées. En suivant une boucle passage par passage, tu verras comment un programme peut produire un texte modifié tout en conservant la chaîne d’origine, et pourquoi affecter une variable diffère de modifier un caractère.

2.1 Parcourir les caractères d’une chaîne

Utilise une boucle lorsqu’une décision doit être prise pour chaque caractère. La boucle peut compter les correspondances, utiliser leurs positions, s’arrêter à la première ou recueillir les caractères qui doivent figurer dans un résultat.

Parcourir directement les caractères
for ch in "hi!":
    print(ch)

Le corps s’exécute trois fois, avec ch égal tour à tour à "h", "i" et "!". Avec la chaîne vide, le corps ne s’exécute aucune fois. Une boucle directe sur les caractères n’a pas besoin d’indice si tu utilises uniquement le caractère courant.

Pour compter, initialise le compteur avant la boucle et augmente-le uniquement lorsque le test réussit :

text = "Programming in Python"
count = 0
for ch in text.lower():
    if ch in "aeiou":
        count += 1
print(count)  # 5

La conversion en minuscules permet aussi de reconnaître les voyelles majuscules. La chaîne du test définit les voyelles comptées ; elle ne contient pas y. Réinitialiser count dans la boucle ferait perdre le total des passages précédents.

Utiliser les positions lorsque les caractères voisins comptent

range(len(text)) fournit les indices de zéro jusqu’au dernier indice valide. Pour une tâche qui nécessite à la fois la position et le caractère, enumerate(text) les fournit ensemble :

for i, ch in enumerate("abc"):
    print(i, ch)

Cela affiche 0 a, puis 1 b, puis 2 c. Les deux variables de boucle reçoivent l’indice et le caractère de chaque paire.

Pour comparer des caractères voisins, le dernier indice ne peut pas être la position courante, car il n’a pas de caractère suivant :

text = "bookkeeper"
pairs = 0
for i in range(len(text) - 1):
    if text[i] == text[i + 1]:
        pairs += 1
print(pairs)  # 3

Les correspondances sont oo, kk et ee. Avec range(len(text)), le dernier passage tenterait d’accéder à text[len(text)] et lèverait IndexError.

Gérer une position avec while
i = 0
while i < len(text):
    print(text[i])
    i += 1

Le test utilise strictement < : la position len(text) dépasse la fin. L’incrémentation fait progresser la boucle vers son arrêt ; si tu l’omets, elle continue indéfiniment à lire le même caractère dans un texte non vide. Pour parcourir le texte à l’envers, commence à len(text) - 1, continue tant que i >= 0 et soustrais un à chaque passage.

Rechercher ou recueillir

Pour trouver le premier chiffre dans "Room 42B", arrête-toi après avoir utilisé une correspondance :

for ch in "Room 42B":
    if ch.isdigit():
        print(ch)  # 4
        break

Sans break, les deux chiffres seraient affichés. Pour un simple test de présence, "4" in text répond déjà par oui ou par non.

Pour recueillir du texte, commence par result = "" et ajoute chaque caractère souhaité. Pour "a b c", ajouter un caractère uniquement lorsque ch != " " construit "abc". L’affectation ch = ch.upper() dans une boucle ne change que la variable de boucle ; elle ne modifie pas les caractères stockés dans text.

Points clés

  • Une boucle for directe parcourt chaque caractère dans l’ordre.
  • Initialise les compteurs et les accumulateurs avant la boucle.
  • enumerate() fournit chaque indice avec son caractère.
  • Arrête-toi une position plus tôt lorsque tu lis text[i + 1].
  • Une boucle while a besoin d’une borne sûre et d’une mise à jour de la position.
  • break arrête une recherche à sa première correspondance.

2.2 Construire de nouvelles chaînes au lieu de modifier les anciennes

Les chaînes sont immuables : leurs caractères ne peuvent pas être modifiés une fois la chaîne créée. Un programme qui semble modifier du texte construit une autre chaîne et choisit la variable qui y fera référence.

Lire un caractère sans lui affecter de valeur
name = "Jane"
name[0] = "D"  # TypeError

L’indice permet de lire "J", mais ne peut pas être la cible d’une affectation. del name[0] lève aussi TypeError. Pour obtenir "Dane", combine le premier caractère souhaité avec la fin inchangée :

name = "Jane"
name = "D" + name[1:]
print(name)  # Dane

Python évalue d’abord le membre de droite et produit une nouvelle chaîne. Il fait ensuite référence à ce résultat par l’intermédiaire de name.

Remplacer ou insérer à une position connue

Pour un indice i valide et positif ou nul, ces expressions utilisent des tranches différentes à droite :

TâcheExpression
Remplacer le caractère à l’indice itext[:i] + new + text[i + 1:]
Insérer avant le caractère à l’indice itext[:i] + new + text[i:]

Le remplacement saute l’ancien caractère ; l’insertion le conserve. Avec text = "cat", i = 1 et new = "X", le remplacement donne "cXt", tandis que l’insertion donne "cXat".

Convertis un indice négatif en son équivalent positif ou nul avant d’utiliser ce schéma de remplacement. Pour le dernier caractère de "cat", i = len(text) - 1 vaut 2. Si tu places directement -1 dans text[i + 1:], cette expression devient text[0:], ce qui ajoute toute l’ancienne chaîne et donne "caXcat".

Conserver le résultat d’une méthode

Les méthodes de transformation suivent la même règle d’immuabilité :

msg = "hello"
msg.upper()
print(msg)       # hello
msg = msg.upper()
print(msg)       # HELLO

Le premier appel calcule un résultat que le programme abandonne. L’affectation conserve le second résultat. Les méthodes de chaîne ne modifient jamais la chaîne d’origine, mais leurs types de retour diffèrent : upper() renvoie une chaîne, find() un entier et isdigit() un booléen.

Suivre deux noms pour une même valeur

Après a = "cat" et b = a, les deux variables font référence à "cat". L’exécution de a = a + "s" donne à a la nouvelle valeur "cats" ; b fait toujours référence à "cat". Aucun caractère de l’ancienne chaîne partagée n’a changé. a += "s" effectue le même type de réaffectation pour une chaîne.

Construire une valeur modifiée dans une boucle
word = "secret"
masked = ""
for ch in word:
    if ch in "aeiou":
        masked += "*"
    else:
        masked += ch
print(masked)  # s*cr*t
print(word)    # secret

Chaque passage ajoute un caractère choisi à masked. Placer chaque caractère au début, avec result = ch + result, inverse le texte : les passages sur "drawer" construisent "d", "rd", "ard", "ward", "eward" et "reward".

La concaténation répétée est pratique pour les exemples courts. Lorsque les éléments existent déjà dans une liste, "".join(pieces) construit directement un résultat et peut aussi placer un séparateur entre eux.

Points clés

  • Une chaîne ne peut pas être modifiée par affectation ou suppression d’un élément.
  • Le remplacement et l’insertion construisent de nouvelles chaînes à partir de tranches.
  • Conserve le résultat d’une transformation en l’affectant à une variable.
  • Réaffecter une variable laisse les autres variables faire référence à l’ancienne valeur.
  • Un accumulateur construit une nouvelle chaîne en ajoutant un élément choisi à la fois.
3

Transformer, rechercher et tester du texte avec les méthodes de chaîne

Les méthodes de chaîne permettent de poser des questions utiles sur du texte et d’en produire des versions nettoyées. Un programme peut devoir accepter des espaces supplémentaires dans une réponse, trouver un séparateur ou vérifier qu’une quantité peut être convertie en nombre. Choisis une méthode selon le résultat dont tu as besoin : du texte modifié, une position, un nombre d’occurrences ou un test booléen. Fais attention aux correspondances exactes, à la valeur renvoyée lorsqu’une recherche échoue et à la différence entre l’ordre du texte et l’ordre numérique.

3.1 Changer la casse et nettoyer du texte avec des méthodes

Une méthode est une fonction attachée à une valeur. Les méthodes de chaîne effectuent des tâches courantes, comme changer la casse, nettoyer les extrémités d’une saisie et remplacer du texte. Chaque appel renvoie un résultat et laisse la chaîne d’origine inchangée.

Appeler une méthode avec la notation pointée

Écris value.method(arguments), comme dans "hello".upper(). Les parenthèses déclenchent l’appel. name.upper sans parenthèses désigne la méthode elle-même ; elle ne produit pas de texte en majuscules. L’écriture upper(name) ne trouve pas de fonction indépendante nommée upper. Utilise dir("") pour répertorier les méthodes de chaîne et help(str.upper) pour lire la description de l’une d’elles.

Choisir une opération sur la casse
MéthodeRésultat pour l’exemple
"Hello".upper()"HELLO"
"Hello".lower()"hello"
"Hello".swapcase()"hELLO"
"the old man".title()"The Old Man"
"hELLO wORLD".capitalize()"Hello world"

capitalize() modifie le premier caractère et met le reste en minuscules ; title() commence de nouveaux mots après les caractères qui ne sont pas des lettres. Ainsi, "they're".title() devient "They'Re" : il peut donc être nécessaire de vérifier les résultats de la mise en majuscules automatique des titres.

Pour les comparaisons sans distinction de casse, casefold() traite plus de cas dans différentes langues que lower(). "Straße".lower() vaut "straße", tandis que "Straße".casefold() vaut "strasse". Effectue le repliement de casse des deux chaînes avant de les comparer.

Nettoyer les extrémités du texte

strip() supprime les caractères d’espacement au début et à la fin, notamment les espaces, tabulations et sauts de ligne. La méthode conserve les espacements internes : " New York \n".strip() vaut "New York". lstrip() nettoie uniquement l’extrémité gauche ; rstrip() uniquement la droite.

Avec un argument, la suppression retire de façon répétée chacun des caractères indiqués aux extrémités. Elle ne supprime pas un mot exact :

print("...Wow!!!".strip(".!"))          # Wow
print("report.txt".rstrip(".txt"))     # repor
print("report.txt".removesuffix(".txt"))  # report

Le t final de report appartient aussi à l’ensemble des caractères à supprimer : il disparaît donc. removeprefix() et removesuffix() suppriment un texte exact à une extrémité ; ces méthodes sont disponibles dans Python 3.9 et les versions ultérieures.

Remplacer les correspondances et chaîner les transformations

replace(old, new) remplace chaque correspondance exacte. Un troisième argument limite le nombre de correspondances modifiées : "a-b-c".replace("-", "", 1) donne "ab-c". Un remplacement vide supprime les correspondances. La casse compte : "Cat cat".replace("cat", "dog") donne donc "Cat dog".

answer = "  YES \n"
answer = answer.strip().lower()
print(answer == "yes")  # True

Les appels s’exécutent de gauche à droite : strip() renvoie "YES", puis lower() renvoie "yes". Un chaînage fonctionne lorsque la méthode suivante convient au type du résultat précédent. Un résultat de recherche est un entier : il ne prend donc pas en charge les méthodes de nettoyage des chaînes.

Pour le remplissage, "7".zfill(3) donne "007", "Total".ljust(8) ajoute trois espaces à droite et "Hi".center(8, "*") donne "***Hi***". rjust() ajoute du remplissage à gauche. Ces largeurs sont des minimums ; un texte plus long est conservé en entier.

Points clés

  • Utilise la notation pointée et des parenthèses pour appeler une méthode de chaîne.
  • Les opérations sur la casse ont des fonctions différentes ; casefold() permet des comparaisons entre langues.
  • strip(chars) supprime un ensemble de caractères aux extrémités ; pour des préfixes ou suffixes exacts, utilise removeprefix() ou removesuffix().
  • replace() recherche du texte exact et peut limiter le nombre de modifications.
  • Les chaînes de transformations s’exécutent de gauche à droite sur chaque chaîne renvoyée.
  • Le remplissage ajoute des caractères jusqu’à une largeur minimale.

3.2 Rechercher du texte dans une chaîne

Une recherche peut répondre à trois questions différentes : si un texte est présent, où il commence et combien de fois il apparaît. Choisis le résultat qui convient à la décision que ton programme doit prendre.

Choisir un résultat de recherche
OutilRésultatEn l’absence de correspondance
sub in textPrésence sous forme de True ou FalseFalse
text.find(sub)Premier indice de début-1
text.rfind(sub)Dernier indice de début-1
text.index(sub)Premier indice de débutLève ValueError
text.count(sub)Nombre d’occurrences sans chevauchement0

Une sous-chaîne est une suite de caractères consécutifs. "py" in "happy" vaut True, mais "hpy" in "happy" vaut False. La recherche respecte la casse : "Py" in "python" vaut False. not in inverse le test de présence. La chaîne vide est présente dans toute chaîne.

Trouver la bonne occurrence
text = "banana"
print(text.find("an"))     # 1
print(text.find("an", 2))  # 3
print(text.rfind("an"))    # 3

La position de début facultative ignore les possibilités précédentes. L’indice renvoyé reste compté depuis le début de la chaîne entière. index() renvoie la même position lorsqu’une correspondance existe, mais l’erreur levée en son absence rend cette méthode utile lorsque l’absence indique un problème inattendu.

Vérifier une position avant d’extraire une tranche
email = "maria.lopez@example.org"
at = email.find("@")
if at != -1:
    user = email[:at]
    domain = email[at + 1:]
    print(user)    # maria.lopez
    print(domain)  # example.org

La recherche renvoie 11. La première tranche s’arrête avant @ ; la seconde commence un caractère après. Si le repère était absent, at vaudrait -1. Utiliser cette valeur comme borne de tranche sélectionnerait du texte près de la fin sans signaler d’erreur : traite donc le cas où le repère manque avant d’extraire les parties.

N’utilise pas if text.find("x"): comme test de présence. Une correspondance à l’indice 0 est considérée comme fausse dans une condition, tandis que la valeur -1, qui indique l’absence de résultat, est considérée comme vraie. Utilise if "x" in text: ou compare explicitement la position à -1.

Rechercher à partir d’un repère connu

Pour line = "Order #4521 shipped", le numéro suit # et se termine à l’espace suivant :

start = line.find("#") + 1
end = line.find(" ", start)
number = line[start:end]
print(number)  # 4521

Ici, les deux repères existent. Commencer la seconde recherche à start permet d’ignorer l’espace précédent après Order. Si des repères peuvent manquer, vérifie chaque résultat de recherche brut avant d’ajouter un ou d’extraire une tranche ; ajouter un à -1 masquerait l’échec de la recherche en transformant le résultat en 0.

Compter les occurrences entières

"banana".count("a") vaut 3, et "banana".count("ana") vaut 1. Les deux occurrences possibles de ana se chevauchent, donc count() ne les compte pas toutes les deux. De même, "aaaa".count("aa") vaut 2.

Pour ignorer la casse, effectue la recherche dans une version convertie, comme avec "python" in sentence.lower(). La recherche trouve toujours les caractères exacts dans cette version. Les comptages et les tests de présence peuvent utiliser directement la chaîne convertie ; un indice appartient à la chaîne précise dans laquelle la recherche a été effectuée.

Points clés

  • Utilise in pour la présence, une méthode de recherche pour la position et count() pour le nombre d’occurrences.
  • find() et rfind() renvoient -1 lorsque le texte est absent ; index() lève ValueError.
  • Vérifie le résultat d’une recherche avant de l’utiliser comme indice ou comme borne de tranche.
  • Un argument de début ignore les correspondances précédentes tout en conservant les indices de la chaîne entière.
  • count() compte les occurrences sans chevauchement.

3.3 Tester et comparer des chaînes

Les tests sur les chaînes renvoient des booléens qui peuvent guider une condition. Ils t’aident à accepter une saisie conforme à une règle et à comparer du texte sous une forme cohérente.

Tester les extrémités ou les caractères

startswith() et endswith() testent un texte exact aux extrémités. Un tuple permet à un test d’accepter plusieurs fins : name.endswith((".jpg", ".png")). La chaîne "photo.PNG", dont l’extension est en majuscules, échoue à ce test sauf si tu la convertis d’abord en minuscules.

TestVrai lorsque la chaîne non vide contient…
isalpha()Uniquement des lettres
isalnum()Uniquement des lettres ou des chiffres
isdigit()Uniquement des caractères Unicode qui sont des chiffres
isdecimal()Uniquement des chiffres décimaux
isspace()Uniquement des caractères d’espacement

Les cinq renvoient False pour "". Les lettres ne se limitent pas à l’alphabet anglais : "café".isalpha() vaut True. L’espace dans "hello world" rend le test isalpha() faux.

isupper() et islower() examinent les caractères qui ont une casse et en exigent au moins un. "ABC1".isupper() vaut True ; le chiffre ne change rien au fait que les lettres sont en majuscules. "123" ne contient aucun caractère ayant une casse, donc les deux tests sont faux.

Valider avant la conversion

Un test de chiffres ne décrit pas tous les nombres que Python peut lire. "-5".isdigit(), "3.5".isdigit() et " 42".isdigit() sont faux, car un signe, un point ou une espace n’est pas un chiffre. De plus, "²".isdigit() est vrai alors que int("²") échoue. isdecimal() rejette ce caractère en exposant et convient à une saisie d’entier positif ou nul écrite uniquement avec des chiffres.

text = input("Tickets: ").strip()
if text.isdecimal() and int(text) > 0:
    print("Accepted")
else:
    print("Enter a positive whole number")

Le test de chaîne s’exécute en premier. Lorsqu’il est faux, and ignore la conversion, ce qui protège le programme contre une saisie vide ou non numérique. " 12 " devient "12" et réussit le test ; "0" se convertit sans erreur, mais échoue au test de valeur positive. Cette règle rejette volontairement les saisies comportant un signe ou un point décimal.

Une règle pour un nom d’utilisateur peut combiner des vérifications de longueur et de caractères : 3 <= len(name) <= 12 and name.isalnum(). "ada99" réussit, "ada 99" échoue au test de caractères et "ad" échoue au test de longueur.

Comparer du texte nettoyé

L’égalité exige les mêmes caractères dans le même ordre. "Yes" == "yes" et "yes " == "yes" sont faux. Pour les réponses dont la casse et les caractères d’espacement aux extrémités doivent être ignorés, compare typed.strip().casefold() à expected.strip().casefold().

Le classement s’effectue caractère par caractère. Le premier point de code Unicode différent détermine le résultat. ord("A") vaut 65, ord("Z") vaut 90 et ord("a") vaut 97 ; chr(97) donne "a". Ainsi, "Zebra" < "apple" est vrai. Lorsqu’une chaîne est un préfixe de l’autre, la plus courte vient en premier : "app" < "apple".

Les chaînes de chiffres suivent aussi l’ordre des caractères : "10" < "9" est vrai parce que "1" vient avant "9". Convertis-les en nombres pour comparer des quantités. Les lettres accentuées demandent aussi de l’attention : ord("é") vaut 233, donc "école" > "zoo" est vrai. Cet ordre intégré suit les points de code, et non l’ordre d’un dictionnaire de langue.

Points clés

  • Les tests sur les chaînes renvoient des booléens ; les tests de caractères vérifient aussi que la chaîne n’est pas vide.
  • isdecimal() est plus strict que isdigit() pour une saisie destinée à int().
  • Utilise un test de caractères avant une conversion numérique protégée.
  • Nettoie les deux chaînes de la même façon lorsque la casse et les espaces aux extrémités ne doivent pas compter.
  • L’ordre des chaînes dépend du premier point de code différent ; l’ordre numérique nécessite des valeurs numériques.
4

Découper du texte en parties et assembler des parties en texte

Une ligne de texte contient souvent plusieurs éléments utiles : des mots dans un message, des champs dans un enregistrement ou des parties d’un code. Le découpage transforme cette ligne en une collection ordonnée que tu peux examiner, compter et convertir. L’assemblage construit une chaîne à partir d’éléments en utilisant le séparateur de ton choix. Les règles du séparateur déterminent si les champs vides et les espacements d’origine sont conservés : le choix compte donc lorsque tu nettoies du texte ou que tu dois le reconstituer exactement.

4.1 Découper une chaîne en une liste de parties

split() transforme une chaîne en une liste de chaînes. Une liste est une collection ordonnée écrite entre crochets. Tu peux lire un élément par son indice, parcourir les éléments ou les compter avec len().

Choisir les caractères d’espacement ou un séparateur exact

Sans argument, split() traite une suite de caractères d’espacement comme une seule séparation et ignore ceux qui se trouvent aux deux extrémités :

words = "  the quick  brown fox ".split()
print(words)       # ['the', 'quick', 'brown', 'fox']
print(len(words))  # 4
print(words[0])    # the

Avec un séparateur explicite, chaque occurrence exacte produit un découpage. Des séparateurs consécutifs conservent un champ vide :

fields = "red,green,,blue".split(",")
# ["red", "green", "", "blue"]

Le troisième élément vide peut représenter une valeur laissée vide. Il compte tout de même comme un élément de la liste.

ExpressionRésultat
"a b".split()["a", "b"]
"a b".split(" ")["a", "", "b"]
"a,b".split(", ")["a,b"]

Un séparateur peut contenir plusieurs caractères, mais ils doivent tous correspondre. Si aucun séparateur n’apparaît, le résultat contient la chaîne d’origine entière comme seul élément. Découper sur une virgule suivie d’une espace diffère donc d’un découpage sur une virgule.

Limiter le découpage du texte

Le deuxième argument, maxsplit, limite le nombre de découpages, et non le nombre d’éléments obtenus :

print("key=value=more".split("=", 1))
# ["key", "value=more"]
print("archive.tar.gz".rsplit(".", 1))
# ["archive.tar", "gz"]

split() commence par la gauche ; rsplit() commence par la droite. Un découpage depuis la droite sépare la dernière extension du fichier sans découper aux points précédents.

Lire les champs et convertir les quantités
line = "Lovelace,Ada,1815"
parts = line.split(",")
if len(parts) == 3:
    last = parts[0]
    first = parts[1]
    year = int(parts[2])
    print(f"{first} {last} was born in {year}.")

La sortie est "Ada Lovelace was born in 1815.". La vérification de la longueur empêche qu’un élément manquant provoque IndexError. Elle ne vérifie pas que l’année est numérique ; une règle de saisie distincte est nécessaire lorsque les données peuvent être invalides.

Chaque partie obtenue par découpage est d’abord une chaîne. Pour faire le total de "3 14 15", initialise total = 0, parcours line.split() et ajoute int(part). Le résultat est 32 ; concaténer les éléments sans les convertir assemblerait les chiffres.

Un séparateur explicite conserve les espaces qui entourent les éléments. "a, b".split(",") donne ["a", " b"]. Appelle strip() sur chaque partie si ces espaces sont indésirables.

Reconnaître deux résultats apparentés

splitlines() découpe aux sauts de ligne : "line one\nline two".splitlines() donne deux chaînes. partition("=") renvoie toujours un tuple de trois parties : le texte avant le premier séparateur, le séparateur et le texte après. "user=ada".partition("=") donne ("user", "=", "ada") ; avec "user", il donne ("user", "", "").

Points clés

  • split() renvoie une liste ordonnée de chaînes.
  • Le découpage sur les caractères d’espacement regroupe leurs suites ; les séparateurs explicites conservent les champs vides.
  • maxsplit limite les découpages et rsplit() commence par la droite.
  • Vérifie le nombre de champs avant l’accès par indice et convertis les champs numériques avant les calculs.
  • splitlines() sépare les lignes ; partition() renvoie le texte avant, le séparateur et le texte après.

4.2 Assembler des chaînes avec un séparateur

join() construit une chaîne à partir d’une séquence de chaînes. La chaîne placée avant le point fournit le séparateur, qui apparaît entre les éléments voisins.

Placer le séparateur en premier
colors = ["red", "green", "blue"]
text = ", ".join(colors)
print(text)  # red, green, blue

Lis cela comme « utilise une virgule suivie d’une espace pour assembler les couleurs ». Il n’y a pas de séparateur avant le premier élément ni après le dernier. Tu peux changer la présentation de la sortie en modifiant uniquement le séparateur :

ExpressionRésultat
"".join(["a", "b", "c"])"abc"
"-".join(["a", "b", "c"])"a-b-c"
"\n".join(["a", "b", "c"])Un élément sur chaque ligne

join() appartient à la chaîne qui sert de séparateur. Écrire ["a", "b"].join(",") lève AttributeError, car la liste n’a pas de méthode join. Un seul appel s’adapte aussi au nombre d’éléments ; tu n’as pas besoin d’écrire une nouvelle suite d’opérations + pour chaque longueur de liste.

Convertir d’abord les éléments qui ne sont pas des chaînes

Tous les éléments doivent déjà être des chaînes. ", ".join([1, 2, 3]) lève TypeError. map(str, items) applique str() à chaque élément, donc ceci fonctionne :

items = [1, 2, 3]
text = " ".join(map(str, items))
print(text)  # 1 2 3

Le str passé à map() est la fonction de conversion. join() reçoit les éléments convertis et renvoie une chaîne.

Une chaîne est elle-même une séquence de chaînes d’un caractère : " ".join("ABC") donne donc "A B C". Cela peut être utile, mais passer un seul mot alors que tu voulais une liste de mots place des séparateurs entre ses caractères.

Modifier les espacements et les séparateurs
text = "too   many    spaces"
cleaned = " ".join(text.split())
print(cleaned)  # too many spaces

Le découpage sur les caractères d’espacement produit d’abord les trois mots. Les assembler avec une seule espace crée un espacement uniforme et ne laisse aucune espace aux extrémités. Les espacements d’origine sont perdus à l’étape du découpage.

Avec un séparateur explicite, les champs vides conservent assez d’informations pour reconstituer le texte exact. Si s = "a,,b,", alors s.split(",") donne ["a", "", "b", ""], et ",".join(...) redonne "a,,b,". Le séparateur doit être le même pour cette reconstitution exacte.

Changer le séparateur change la présentation : "-".join("2026/07/04".split("/")) donne "2026-07-04". Ici, replace("/", "-") est aussi une solution directe.

Recueillir un petit résultat à partir de mots

Pour obtenir un sigle, découpe "portable network graphics", commence par acronym = "" et ajoute word[0].upper() pour chaque mot. Le découpage sur les caractères d’espacement fournit des mots non vides, donc leurs premiers caractères existent. Cela construit "PNG". Si les lettres sont déjà dans une liste, ".".join(["P", "N", "G"]) construit "P.N.G" sans point final.

Points clés

  • Appelle join() sur le séparateur en lui passant les éléments comme argument.
  • Les séparateurs apparaissent uniquement entre les éléments, et chaque élément doit être une chaîne.
  • Découper sur les caractères d’espacement et assembler avec une seule espace uniformise les espacements.
  • Assembler avec le même séparateur explicite peut reconstituer le texte, y compris les champs vides.
5

Mettre en forme l’affichage avec des f-strings

Une sortie utile associe une valeur correcte à une présentation lisible. Une f-string place des valeurs et des expressions directement dans le texte, puis te permet de choisir l’apparence de chaque champ : décimales, groupement, signes, dates ou colonnes alignées. Sépare le calcul de l’affichage. Un champ peut afficher deux décimales ou un nom raccourci tandis que la variable d’origine conserve sa valeur complète pour des calculs ultérieurs ou un autre affichage.

5.1 Insérer des valeurs dans du texte avec des f-strings

Une f-string est un littéral de chaîne qui comporte f ou F avant son guillemet ouvrant. À l’intérieur, les accolades contiennent des expressions dont les valeurs sont insérées dans le texte.

Insérer des variables et des expressions
name = "Ada"
age = 36
message = f"{name} is {age} years old."
print(message)  # Ada is 36 years old.

Les nombres deviennent automatiquement du texte dans un champ. Le même message pourrait utiliser la concaténation et str(age), mais la f-string permet de voir la présentation finale en un seul endroit.

Les accolades peuvent contenir des calculs, des appels de méthodes ou des appels de fonctions :

price = 4.5
qty = 3
print(f"Cost: {price * qty}")  # Cost: 13.5
print(f"Name: {name.upper()}")  # Name: ADA
word = "Python"
print(f"{len(word)} letters")  # 6 letters

Python évalue chaque expression lorsque la ligne s’exécute. Une chaîne enregistrée ne reste pas liée aux variables utilisées pour la construire. Si qty change après la construction de message, cette chaîne conserve ses caractères.

Distinguer le texte ordinaire des champs

Sans le préfixe, "Hello {name}" est du texte ordinaire qui conserve ses accolades. L’absence de f est une raison fréquente pour laquelle un programme affiche le nom de la variable au lieu de sa valeur. Avec le préfixe, un nom auquel aucune valeur n’a été affectée lève NameError lorsque l’expression s’exécute.

Pour afficher une accolade littérale, double-la :

x = 5
print(f"{{x}} = {x}")  # {x} = 5

Les accolades doublées fournissent le texte littéral {x}. La paire simple autour du dernier x fournit sa valeur.

Garder les expressions entre guillemets faciles à lire

Utilise l’autre type de guillemets à l’intérieur d’un champ :

print(f"Shout: {'hi'.upper()}")  # Shout: HI

Cette écriture fonctionne dans toutes les versions de Python qui proposent les f-strings, apparues dans la version 3.6. Python 3.12 et les versions ultérieures permettent aussi de réutiliser le type de guillemets extérieur à l’intérieur du champ. Les séquences d’échappement fonctionnent toujours dans les f-strings : f"Name: {name}\nAge: {age}" s’affiche sur deux lignes.

Pour un affichage rapide lors du débogage, Python 3.8 et les versions ultérieures acceptent = après une expression. Avec x = 5, f"{x=}" donne "x=5" ; avec total = 12, f"{total = }" donne "total = 12". Les espaces saisies autour de l’expression et du signe égal apparaissent à l’affichage.

Lire les anciennes formes de mise en forme

Le code Python existant peut construire le même texte d’autres façons :

FormeExempleRésultat
F-stringf"{name} is {age}""Ada is 36"
Méthode de chaîne"{} is {}".format(name, age)"Ada is 36"
Mise en forme avec le signe pourcentage"%s is %d" % (name, age)"Ada is 36"

str.format() remplit les champs entre accolades avec ses arguments. Des champs numérotés peuvent réutiliser un argument : "{0} {1} {0}".format("a", "b") donne "a b a". Dans la mise en forme avec le signe pourcentage, %s insère du texte et %d un entier. Reconnaître ces champs t’aide à lire un programme, même s’il a été écrit avant que les f-strings soient courantes.

Points clés

  • Une f-string nécessite un préfixe f et des accolades autour de chaque expression.
  • Les champs sont évalués à l’exécution de la f-string ; le texte enregistré ne se met pas à jour ensuite.
  • Des accolades doublées affichent des accolades littérales.
  • str.format() et la mise en forme avec le signe pourcentage sont d’anciennes façons d’insérer des valeurs.

5.2 Mettre en forme des nombres, des dates et des heures pour les lecteurs

Une spécification de format contrôle la façon dont une valeur est affichée. Place deux-points après l’expression, puis les instructions : f"{value:spec}". La mise en forme renvoie du texte et laisse la valeur numérique d’origine inchangée.

Définir le nombre de décimales et comprendre l’arrondi

.Nf affiche exactement N chiffres après le point décimal. f"{3.14159:.2f}" donne "3.14", f"{2/3:.3f}" donne "0.667" et f"{5:.2f}" donne "5.00". .0f n’affiche pas de point décimal : f"{7.6:.0f}" donne "8".

L’arrondi utilise la valeur réellement stockée. La plupart des fractions décimales sont des approximations binaires très proches. Le flottant 2.675 est légèrement inférieur à cette valeur décimale exacte, donc f"{2.675:.2f}" donne "2.67". Les valeurs exactement à mi-chemin sont arrondies au chiffre final pair : 0.125 s’affiche sous la forme "0.12", tandis que 0.375 s’affiche sous la forme "0.38" avec deux décimales. f"{2.5:.0f}" donne "2". Les programmes qui nécessitent des calculs d’argent exacts stockent souvent les centimes entiers sous forme d’entiers.

Ajouter le groupement et les pourcentages
SpécificationExemple de résultat
f"{1234567:,}""1,234,567"
f"{1234567:_}""1_234_567"
f"{1234567.891:,.2f}""1,234,567.89"
f"{0.256:.1%}""25.6%"

Une virgule groupe les milliers ; le point introduit la précision décimale. Pour un montant en dollars, garde le symbole dollar en dehors du champ : avec amount = 1250.5, f"${amount:,.2f}" donne "$1,250.50".

Le type % multiplie par 100 et ajoute %. Utilise une fraction comme 0.256 pour afficher 25.6%. Si tu fournis 25.6, le pourcentage affiché est multiplié une nouvelle fois. Sans précision explicite, % affiche six décimales.

Mettre en forme les entiers et les parties d’une date

d sert aux entiers. f"{42:d}" fonctionne, mais f"{3.0:d}" lève ValueError, car un flottant n’est pas un entier. Un zéro placé avant une largeur ajoute un remplissage par des zéros ; un signe plus demande l’affichage du signe :

print(f"{7:03d}")   # 007
print(f"{5:+d}")    # +5
print(f"{-5:+d}")   # -5

Pour le mois 7, le jour 4 et l’année 2026, f"{month:02d}/{day:02d}/{year}" construit "07/04/2026". Pour l’heure 9 et les minutes 5, f"{hour}:{minute:02d}" construit "9:05". Le remplissage par des zéros empêche que des minutes à un chiffre apparaissent sous la forme "9:5".

Combiner les instructions dans l’ordre

L’ordre est le suivant : caractère de remplissage, alignement, signe, zéro, largeur, groupement, précision, type. Tu peux omettre les parties inutiles. f"{12345.678:>12,.2f}" utilise un alignement à droite, une largeur de 12, un groupement par virgule et deux décimales, ce qui donne " 12,345.68".

La précision peut provenir d’une autre variable : avec places = 3, f"{3.14159:.{places}f}" donne "3.142". Les mêmes spécifications fonctionnent dans les champs de format(value, spec) et de str.format(). Garde le nombre d’origine pour les calculs ; round(value, 2) renvoie un nombre arrondi lorsque le calcul l’exige.

Points clés

  • Deux-points introduisent les instructions d’affichage ; la valeur stockée ne change pas.
  • La précision en format à virgule fixe détermine le nombre de décimales et l’arrondi suit la valeur stockée.
  • Une virgule groupe les milliers ; % multiplie une fraction par 100.
  • d exige un entier ; le remplissage par des zéros garde les parties des dates et des heures lisibles.
  • Garde les nombres pour les calculs et mets-les en forme au moment de l’affichage.

5.3 Aligner l’affichage en colonnes

Une largeur de champ réserve un nombre minimal de positions de caractères pour une valeur. Combiner les largeurs rend les petits tableaux et les reçus lisibles dans un terminal.

Choisir la largeur et l’alignement

Par défaut, les chaînes s’alignent à gauche et les nombres à droite. f"{'cat':6}" donne "cat ", tandis que f"{42:6}" donne " 42". Utilise un caractère d’alignement pour choisir explicitement :

CaractèreSignificationExemple
<Gauchef"{'hi':<6}" donne "hi "
>Droitef"{'hi':>6}" donne " hi"
^Centréf"{'hi':^6}" donne " hi "

Lorsque le centrage laisse un nombre impair d’espaces, l’alignement des f-strings place l’espace supplémentaire à droite : f"{'hi':^7}" donne " hi ".

La largeur est un minimum. f"{'elephant':4}" donne toujours "elephant" ; le mot n’est pas tronqué. Une entrée longue peut donc désaligner les colonnes suivantes.

Ajouter un caractère de remplissage ou limiter le texte

Un caractère de remplissage se place immédiatement avant l’alignement. f"{'hi':*^10}" donne "****hi****", et f"{7:0>3}" donne "007". Le remplissage nécessite un caractère d’alignement. f"{'':-^20}" remplit un champ vide avec vingt tirets.

La précision de chaîne limite le nombre de caractères affichés :

place = "Washington"
print(f"{place:.4}")      # Wash
print(f"|{place:10.4}|")  # |Wash      |

La précision limite d’abord le texte affiché à quatre caractères ; la largeur le complète ensuite jusqu’à dix. Utilise une largeur et une précision adaptées lorsque le texte doit rester dans une colonne fixe. La valeur d’origine de place est toujours "Washington".

Construire une ligne de reçu
item = "Apples"
qty = 3
price = 4.50
row = f"{item:<8}{qty:>4}{qty * price:>9.2f}"
print(row)

Le résultat est "Apples 3 13.50". Le champ de l’article contient six lettres et deux espaces. Le champ de quantité ajoute trois espaces avant 3. Le champ de coût ajoute quatre espaces avant 13.50, qui comporte cinq caractères. Ensemble, les champs occupent 21 caractères.

Réutilise ces largeurs pour le pain (1 à 2,25) et le café (2 à 11,00). Leurs lignes sont "Bread 1 2.25" et "Coffee 2 22.00". Une ligne de total peut combiner les deux premiers champs :

print(f"{'Total':<12}{37.75:>9.2f}")
# "Total           37.75"

Le champ de coût commence à la même position et comporte le même nombre de décimales, donc les montants sont alignés.

Adapter la présentation à son affichage

Choisis des largeurs qui laissent assez de place pour les entrées les plus longues et les espacements, ou raccourcis volontairement le texte. Une variable peut fournir une largeur : avec w = 10, f"{name:<{w}}" complète name jusqu’à dix caractères.

Les colonnes fondées sur les caractères nécessitent une police à chasse fixe, comme celle d’un terminal. Pour un remplissage simple hors d’une f-string, ljust() et rjust() se comportent comme < et >. center() et ^ centrent tous deux le texte, mais peuvent répartir différemment un remplissage impair : "hi".center(7) donne " hi ", tandis que f"{'hi':^7}" donne " hi ".

Points clés

  • La largeur définit un minimum ; l’alignement détermine où placer le remplissage.
  • Le caractère de remplissage précède l’alignement et la précision de chaîne limite les caractères affichés.
  • Utilise les mêmes largeurs de champ et le même nombre de décimales sur chaque ligne.
  • Choisis un affichage à chasse fixe pour les colonnes fondées sur les caractères.
  • center() et le centrage des f-strings peuvent placer différemment un remplissage impair.

Chaînes de caractères en Python : exemples

5 Leçons Interactives

1

Décomposer un code caractère par caractère

14 étapes
Crée une étiquette, lis des positions et extrais ou inverse certaines parties.
  1. 1
    IntroductionLire une étiquette de stockage

    Une étiquette de stockage contient des lettres, un trait d’union et des chiffres : "Box-482". C’est une chaîne de caractères, et chaque caractère possède un indice. Un programme peut avoir besoin de la première lettre, du dernier chiffre ou de toute la partie numérique (une tranche).

    Tu vas construire l’étiquette, représenter ses positions et sélectionner ses parties. Suis les caractères exacts à chaque étape ; une espace ou un séparateur modifie les positions tout comme une lettre.

  2. 2
    ExplicationDistinguer la syntaxe du texte stocké

    Une chaîne de caractères est une séquence ordonnée de caractères. Les guillemets extérieurs indiquent à Python où un littéral commence et se termine ; ils ne font pas partie de sa valeur.

    label = "Box-482"
    print(len(label))  # 7
    

    Le trait d’union est l’un des sept caractères. Des guillemets simples pourraient délimiter la même valeur. Tu peux aussi stocker un texte vide avec "", dont la longueur est nulle.

  3. 3
    ExempleConstruire l’étiquette à partir d’éléments

    Commence avec le mot et un code numérique :

    kind = "Box"
    number = 482
    label = kind + "-" + str(number)
    

    str(number) produit "482", puis les deux concaténations construisent "Box-482". Le trait d’union apparaît parce qu’il est fourni comme élément. Omettre str() tenterait de concaténer une chaîne et un entier, ce qui lève TypeError.

  4. 4
    DéfiCompter les caractères d’une valeur avec une séquence d’échappement

    Un court message est stocké sous la forme notice = "A\nB!". Quelle est sa longueur et combien de lignes print(notice) affiche-t-il ?

    ---reveal---

    La longueur est 4 : A, un saut de ligne, B et !. L’affichage comporte deux lignes, avec A sur la première et B! sur la seconde. La séquence d’échappement est traitée à la lecture du littéral ; l’affichage révèle le saut de ligne déjà présent dans sa valeur.

  5. 5
    AnalogieAttribuer un numéro à chaque position

    Imagine l’étiquette comme sept cases numérotées à la suite. La numérotation commence à zéro :

    Character: B o x - 4 8 2
    Index:     0 1 2 3 4 5 6
    

    label[0] donne "B", et label[4] donne "4". Le résultat est une chaîne d’un caractère, même lorsqu’il ressemble à un nombre. La position 7 serait la huitième case, qui n’existe pas dans cette étiquette.

  6. 6
    ExplicationCompter à rebours depuis le dernier caractère

    Les indices négatifs utilisent la fin comme point de référence. Pour "Box-482", label[-1] vaut "2" et label[-3] vaut "4".

    L’équivalent positif ou nul de -3 est len(label) - 3, soit 4. Les deux sélectionnent le même caractère. Il n’y a pas de position zéro négative à la fin : -0 est simplement 0, donc cet indice sélectionne toujours le premier caractère.

  7. 7
    DéfiSélectionner un caractère sans exécuter le code

    Pour code = "Tin-739", que vaut code[-2] ? Est-ce que code[len(code)] sélectionnerait le dernier caractère ?

    ---reveal---

    code[-2] vaut "3", le caractère juste avant le 9 final. code[len(code)] lève IndexError : une longueur de sept correspond à des indices allant de zéro à six. L’expression qui désigne le dernier caractère est code[len(code) - 1], ou code[-1].

  8. 8
    ConseilProtéger la lecture d’un caractère

    Une saisie vide n’a pas de caractère à l’indice zéro. Place la vérification de la longueur avant la lecture du caractère :

    if len(label) > 0 and label[0] == "B":
        print("Begins with B")
    

    Lorsque le premier test est faux, and ignore le second. Cet ordre est important : placer label[0] en premier provoquerait déjà une erreur sur une saisie vide avant que Python puisse atteindre la vérification de longueur.

  9. 9
    ExplicationSélectionner toute la partie numérique

    Une tranche inclut son début et exclut sa fin :

    label = "Box-482"
    number_text = label[4:7]
    print(number_text)  # 482
    

    Les positions 4, 5 et 6 fournissent les chiffres. La fin 7 est la borne après le dernier caractère. Comme la sélection va jusqu’à la fin, label[4:] donne le même résultat. Aucune conversion n’a lieu ; la tranche reste du texte.

  10. 10
    ExempleFaire se rejoindre les deux tranches

    La partie gauche se termine à la borne où commence la partie numérique :

    left = label[:4]   # "Box-"
    right = label[4:]  # "482"
    print(left + right)  # Box-482
    

    La borne commune 4 fait se rejoindre les parties sans espace ni chevauchement. C’est pourquoi s[:k] + s[k:] reconstitue une chaîne. Utiliser label[:3] exclurait le trait d’union du résultat reconstitué.

  11. 11
    Point cléUne borne de tranche peut dépasser la fin

    Compare label[99] à label[4:99]. L’indice seul lève IndexError, mais la tranche donne "482".

    Une tranche ramène une borne qui dépasse la chaîne à son extrémité disponible. label[99:] donne donc un texte vide. C’est utile pour prendre au plus une certaine quantité de texte, mais cela signifie aussi qu’une tranche incorrecte peut renvoyer moins de caractères que prévu sans signaler d’erreur.

  12. 12
    ExempleInverser uniquement les chiffres sélectionnés

    Extrais d’abord les chiffres, puis inverse cette nouvelle chaîne :

    digits = label[4:]
    backward = digits[::-1]
    print(backward)  # 284
    

    Un pas négatif parcourt la chaîne à l’envers. Lorsque les deux bornes sont omises, la tranche parcourt tous les caractères du dernier au premier. Un pas positif de deux sauterait une position sur deux. Un pas nul est invalide et lève ValueError.

  13. 13
    DéfiConstruire une étiquette modifiée

    Pour label = "Jar-916", que vaut label[:4] + label[4:][::-1] ? Explique quelle partie conserve son ordre.

    ---reveal---

    Le résultat est "Jar-619". La première tranche conserve "Jar-" sans changement. La seconde sélectionne d’abord "916", puis [::-1] inverse uniquement ces chiffres pour donner "619". La concaténation place les deux résultats ensemble sans ajouter de séparateur.

  14. 14
    RécapitulatifDistinguer les positions des bornes

    Utilise un indice pour un caractère et une tranche pour une partie. Les positions commencent à zéro ; les indices négatifs comptent depuis la fin. Une tranche exclut sa fin et son pas contrôle le sens et l’écart entre les caractères.

    Suis d’abord les caractères stockés, puis évalue chaque sélection avant de combiner les résultats.

2

Construire un code masqué avec une boucle

12 étapes
Suis l’évolution des compteurs et l’accumulation de chaînes, puis explique pourquoi le texte d’origine reste inchangé.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionConserver les chiffres et masquer les lettres
  2. 2
    ExplicationInitialiser les résultats cumulés
  3. 3
    ExemplePrendre une décision pour chaque caractère
  4. 4
    ExempleSuivre les passages restants
  5. 5
    DéfiSuivre une autre saisie
  6. 6
    LienAjouter les positions uniquement si nécessaire
  7. 7
    ConseilLaisser une place pour le caractère suivant
  8. 8
    Point cléL’ancienne chaîne n’a pas été modifiée
  9. 9
    ExempleConserver un autre nom pour l’ancienne valeur
  10. 10
    ExempleRemplacer un caractère avec des tranches
  11. 11
    DéfiSuivre la valeur et sa copie enregistrée
  12. 12
    RécapitulatifSuivre chaque variable pendant la boucle
3

Lire et valider un message avec des repères

16 étapes
Nettoie le texte saisi, localise des repères et applique des tests de saisie avant la conversion numérique.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionTraiter une courte demande
  2. 2
    ExempleNettoyer les caractères d’espacement aux extrémités
  3. 3
    ExplicationAppeler et chaîner des méthodes
  4. 4
    DéfiChoisir une opération sur une fin exacte
  5. 5
    LienComparer du texte avec le repliement de casse
  6. 6
    ExplicationDemander si, où ou combien de fois
  7. 7
    ExempleLocaliser le début du nom
  8. 8
    ExempleTrouver la fin après le début
  9. 9
    ConseilNe pas confondre position et présence
  10. 10
    DéfiExtraire un champ entre des repères
  11. 11
    ExempleExtraire le texte du nombre de places
  12. 12
    ExplicationTester avant de convertir
  13. 13
    DéfiAppliquer la même règle de saisie
  14. 14
    Point cléUne comparaison de texte ne compare pas les quantités
  15. 15
    DéfiTraiter un champ nettoyé et une recherche infructueuse
  16. 16
    RécapitulatifUtiliser chaque résultat pour son rôle prévu
4

Transformer un enregistrement en champs et en texte lisible

12 étapes
Découpe un petit enregistrement, convertis ses quantités et assemble les éléments en choisissant les règles de séparation.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionLire un enregistrement simple
  2. 2
    ExplicationDécouper avec un séparateur exact
  3. 3
    ExempleVérifier les champs avant de les lire
  4. 4
    ExempleCalculer avec les valeurs converties
  5. 5
    DéfiConserver une valeur manquante
  6. 6
    Point cléLe découpage sur les caractères d’espacement produit d’autres éléments
  7. 7
    ConseilS’arrêter après le découpage nécessaire
  8. 8
    ExempleAssembler les éléments à afficher avec un séparateur
  9. 9
    DéfiPrévoir un assemblage avec des éléments vides
  10. 10
    LienChoisir entre nettoyage et reconstitution exacte
  11. 11
    DéfiCorriger l’affichage d’un enregistrement
  12. 12
    RécapitulatifSuivre les types dans l’enregistrement
5

Mettre en forme un petit reçu

16 étapes
Construis des f-strings, choisis des formats numériques et aligne une ligne de reçu sans modifier les données sous-jacentes.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionDonner à un calcul une présentation lisible
  2. 2
    ExempleInsérer le coût de la ligne
  3. 3
    DéfiRepérer quand l’expression s’exécute
  4. 4
    ConseilGarder la syntaxe des champs visible
  5. 5
    ExplicationChoisir deux décimales
  6. 6
    Point cléArrondir la valeur réellement stockée
  7. 7
    ExempleAfficher un taux en pourcentage
  8. 8
    DéfiCombiner groupement et décimales
  9. 9
    LienCompléter les parties des dates et des heures
  10. 10
    ExplicationRéserver les champs du reçu
  11. 11
    ExempleCompter les espaces dans une ligne
  12. 12
    ConseilLa largeur ne raccourcit pas un article long
  13. 13
    DéfiLire un champ rempli et centré
  14. 14
    DéfiConstruire une seconde ligne de reçu
  15. 15
    LienAdapter la police à la présentation
  16. 16
    RécapitulatifSéparer le calcul de la présentation

Chaînes de caractères en Python : QCM

50 Questions Pratiques en 5 séries

Série 1 : Lire des littéraux, des indices et des tranches10 Questions Pratiques

Question 1 sur 10

Quelle est la valeur de len("x\ty!") ?
  1. 5
  2. 4
  3. 6
  4. 3
Afficher la réponseMasquer la réponse
Réponse : B
La séquence d’échappement de tabulation représente un seul caractère : la valeur contient donc x, une tabulation, y et !. Les guillemets extérieurs et les deux symboles écrits pour \t ne sont pas des caractères supplémentaires de la valeur. Compter la séquence d’échappement comme une barre oblique inverse et une lettre donnerait cinq.

Question 2 sur 10

Quel texte "Tag: " + str(8 * 2) produit-il ?
  1. "Tag: 82"
  2. "Tag: 8 * 2"
  3. "Tag: 16.0"
  4. "Tag: 16"
Afficher la réponseMasquer la réponse
Réponse : D
La multiplication s’exécute d’abord et donne l’entier 16, que str() convertit en "16". La concaténation l’ajoute ensuite après "Tag: ". Assembler les chiffres écrits pour obtenir "82" nécessiterait des opérandes de type chaîne ; ici, l’expression multiplie deux entiers avant la conversion.

Question 3 sur 10

Que stocke r"D:\temp" après les deux-points ?
  1. Une barre oblique inverse suivie de temp.
  2. Une tabulation suivie de emp.
  3. Deux barres obliques inverses suivies de temp.
  4. Un saut de ligne suivi de temp.
Afficher la réponseMasquer la réponse
Réponse : A
Le préfixe de chaîne brute conserve la barre oblique inverse comme caractère littéral : elle reste donc avant les lettres temp. Dans un littéral ordinaire, le \t initial deviendrait une tabulation. La syntaxe brute n’ajoute pas de seconde barre oblique inverse à la chaîne stockée ; la seule barre écrite reste un seul caractère.

Question 4 sur 10

Avec code = "R7K2", que vaut code[-2] ?
  1. "7"
  2. "2"
  3. "K"
  4. "R"
Afficher la réponseMasquer la réponse
Réponse : C
Les indices négatifs comptent depuis la fin : -1 sélectionne "2" et -2 sélectionne "K". La valeur est une chaîne d’un caractère. Compter deux caractères depuis la gauche sélectionnerait "7", mais le signe négatif fait de la fin de la chaîne le point de référence.

Question 5 sur 10

Avec word = "orbit", que renvoie word[len(word) // 2] ?
  1. "r"
  2. "i"
  3. Lève TypeError.
  4. "b"
Afficher la réponseMasquer la réponse
Réponse : D
La longueur est de cinq, donc la division entière par deux donne l’indice entier 2. Les indices 0, 1 et 2 sélectionnent o, r et b : "b" est donc le caractère du milieu. TypeError se produirait avec un indice flottant, mais // produit ici un entier.

Question 6 sur 10

Que se passe-t-il lorsque ce code s’exécute avec line = "" ?

if len(line) > 0 and line[0] == ";":
    print("Skip")
  1. Il lève IndexError avant le test de longueur.
  2. Il n’affiche rien et ne lève aucune erreur.
  3. Il affiche "Skip" une fois et s’arrête.
  4. Il lève TypeError dans la condition.
Afficher la réponseMasquer la réponse
Réponse : B
Le test de longueur est faux, donc and ignore la lecture du caractère et le corps ne s’exécute pas. La chaîne vide provoquerait IndexError si line[0] était évalué. Ici, l’ordre des tests empêche d’utiliser cet indice sur une saisie vide.

Question 7 sur 10

Que vaut "notebook"[2:5] ?
  1. "teb"
  2. "tebo"
  3. "ote"
  4. "te"
Afficher la réponseMasquer la réponse
Réponse : A
La tranche sélectionne les indices 2, 3 et 4 : t, e et b. L’indice de fin 5 est exclu, donc son o n’apparaît pas. Inclure ce caractère donnerait "tebo", ce qui reviendrait à considérer la fin comme incluse plutôt que comme la première position exclue.

Question 8 sur 10

Quel est le résultat de "map"[1:50] ?
  1. "a"
  2. ""
  3. "ap"
  4. Lève IndexError.
Afficher la réponseMasquer la réponse
Réponse : C
La tranche commence à l’indice 1 et continue jusqu’à la fin, car la borne de fin trop grande est ramenée à la fin de la chaîne. Elle conserve a et p, ce qui donne "ap". Une lecture d’un seul caractère comme "map"[50] lèverait IndexError, mais les bornes de tranche peuvent dépasser les caractères disponibles.

Question 9 sur 10

Que renvoie "0123456789"[1:8:3] ?
  1. "148"
  2. "147"
  3. "1357"
  4. "1478"
Afficher la réponseMasquer la réponse
Réponse : B
Commence à l’indice 1 et avance de trois positions à la fois : 1, 4 et 7. La position suivante serait 10, au-delà de la borne de fin exclue 8. "1357" utilise un pas de deux ; le troisième argument de la tranche indique l’écart entre les positions sélectionnées, et non le nombre de caractères souhaités.

Question 10 sur 10

Avec s = "red-blue", que vaut s[-4:][::-1] + s[:3] ?
  1. "derblue"
  2. "eulb-red"
  3. "eulbred"
  4. "blueeulb"
Afficher la réponseMasquer la réponse
Réponse : C
Les quatre derniers caractères sont "blue" ; inverser cette tranche donne "eulb". Le préfixe s[:3] vaut "red", donc la concaténation donne "eulbred". Le trait d’union à l’indice 3 n’appartient à aucune des deux tranches sélectionnées et n’est pas inséré automatiquement lors de leur assemblage.
Série 2 : Suivre les boucles et les nouvelles valeurs de chaîne10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Combien de fois le corps de for ch in "a b!": s’exécute-t-il ?
  1. 2
  2. 3
  3. 4
  4. 5
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Qu’est-ce qui est affiché ?

total = 0
for ch in "Route 68":
    if ch.isdecimal():
        total += int(ch)
print(total)
  1. 14
  2. 2
  3. 68
  4. 8
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Qu’est-ce qui est affiché ?

for ch in "Cab 53A":
    if ch.isdigit():
        print(ch)
        break
  1. 3
  2. 53
  3. 5 puis 3 sur des lignes distinctes
  4. 5
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Qu’est-ce qui est affiché ?

for i, ch in enumerate("lamp"):
    if i % 2 == 1:
        print(ch, end="")
  1. lm
  2. ap
  3. am
  4. lp
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Quelle valeur est affichée ?

s = "aaabb"
pairs = 0
for i in range(len(s) - 1):
    if s[i] == s[i + 1]:
        pairs += 1
print(pairs)
  1. 2
  2. 3
  3. 4
  4. 1
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Quel texte est affiché ?

s = "north"
i = len(s) - 1
result = ""
while i >= 0:
    result += s[i]
    i -= 2
print(result)
  1. hrn
  2. htr
  3. nrt
  4. hon
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Que contient b après ce code ?

a = "pine"
b = a
a = a.upper()
  1. "PINE" (tout en majuscules)
  2. "Pine" (initiale seule en majuscule)
  3. "" (texte vide)
  4. "pine" (texte d’origine)
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Avec s = "stone", que produit s[:2] + "X" + s[3:] ?
  1. "stXone"
  2. "sXone"
  3. "stXne"
  4. "stXo"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Quelle paire de valeurs est affichée ?

word = "muse"
result = ""
for ch in word:
    if ch in "aeiou":
        result = ch.upper() + result
    else:
        result = ch + result
print(word, result)
  1. muse mUsE (mot inchangé, résultat modifié dans l’ordre initial)
  2. mUsE EsUm (mot modifié, résultat modifié et inversé)
  3. muse Esum (mot inchangé, une majuscule dans le résultat)
  4. muse EsUm (mot inchangé, résultat modifié et inversé)
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Qu’affiche ce code ?

s = "  west  "
s.strip()
s = s + "!"
print(len(s))
  1. 5
  2. 6
  3. 9
  4. 8
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 3 : Nettoyer, rechercher et valider du texte10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Que renvoie " Go Home ".strip().lower() ?
  1. "gohome" (aucune espace)
  2. " go home " (espaces extérieures conservées)
  3. "Go Home" (casse d’origine)
  4. "go home" (une espace intérieure)
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Que renvoie "test.txt".rstrip(".txt") ?
  1. "test"
  2. "test."
  3. "tes"
  4. "test.tx"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Que vaut "A-a-a".replace("a", "x", 1).lower() ?
  1. "a-x-a" (première correspondance minuscule modifiée)
  2. "a-x-x" (deux correspondances minuscules modifiées)
  3. "x-a-a" (lettre initiale modifiée)
  4. "A-x-a" (casse initiale conservée)
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Que vaut "cocoa".rfind("co") ?
  1. 0
  2. 2
  3. 3
  4. 4
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Qu’est-ce qui est affiché ?

s = "label"
p = s.find(":")
print(s[p:])
  1. l
  2. label
  3. Une ligne vide
  4. Lève ValueError.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Quel texte est extrait ?

s = "Item [K9] ready [Q2]"
a = s.find("[")
b = s.find("]", a)
result = s[a + 1:b]
  1. "[K9"
  2. "Q2"
  3. "K9"
  4. "K9] ready [Q2"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Que vaut "abababa".count("aba") ?
  1. 3
  2. 1
  3. 0
  4. 2
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Un formulaire utilise s = raw.strip() puis s.isdecimal() and int(s) > 0. La saisie brute " 08 " réussit-elle le test et quel entier représente-t-elle ?
  1. Elle échoue à cause des espaces extérieures.
  2. Elle réussit et représente 8.
  3. Elle réussit et conserve le texte "08".
  4. Elle échoue à cause du zéro initial.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Pour a = " Cedar " et b = "cedar", quelle paire résulte de a == b et de a.strip().casefold() == b.strip().casefold() ?
  1. True, True
  2. False, False
  3. False, True
  4. True, False
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Quelle paire résulte de "24" < "7" et de int("24") < int("7") ?
  1. False, False
  2. True, False
  3. False, True
  4. True, True
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 4 : Découper des enregistrements et reconstituer du texte10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Que vaut len(" one\ttwo three ".split()) ?
  1. 4
  2. 3
  3. 5
  4. 6
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Que renvoie "A||C|".split("|") ?
  1. ["A", "", "C", ""]
  2. ["A", "C"]
  3. ["A", "", "C"]
  4. ["A", "|C|"]
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Que vaut "red;blue".split("; ") ?
  1. ["red", "blue"]
  2. ["red", " blue"]
  3. ["red;blue"]
  4. ["red;", "blue"]
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Qu’est-ce qui est affiché ?

parts = "Mina;4;6".split(";")
total = int(parts[1]) + int(parts[2])
print(f"{parts[0]}:{total}")
  1. Mina:46
  2. Mina:4
  3. Mina:6
  4. Mina:10
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Que vaut "mode=fast=quiet".split("=", 1)[1] ?
  1. "fast"
  2. "quiet"
  3. "fast=quiet"
  4. "mode=fast"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Que renvoie "status".partition(":") ?
  1. ("", ":", "status")
  2. ("status", ":", "")
  3. ("status", "", "")
  4. ("", "", "status")
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Que produit " / ".join("ab") ?
  1. "a / b"
  2. "ab"
  3. "a / b / "
  4. " / a / b"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Que vaut "-".join("x::z:".split(":")) ?
  1. "x-z"
  2. "x--z-"
  3. "x-z-"
  4. "x--z"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Quel texte est stocké dans result = " ".join(" bright\n blue sky ".split()) ?
  1. " bright blue sky "
  2. "brightblue sky"
  3. "bright blue sky"
  4. "bright blue sky"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Que produit ": ".join(map(str, [6, 11])) ?
  1. "6: 11"
  2. "6:11"
  3. "6: 11: "
  4. Lève TypeError.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 5 : Construire des valeurs et des colonnes lisibles10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Avec name = "Luca", que produit f"Hi, {name.upper()}!" ?
  1. "Hi, Luca!" (casse d’origine du nom)
  2. "Hi, {name.upper()}!" (champ non évalué)
  3. "Hi, LUCA!" (nom en majuscules)
  4. "HI, LUCA!" (message entier en majuscules)
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Quel texte est affiché ?

n = 4
label = f"{{n}}={n + 2}"
n = 9
print(label)
  1. {n}=11
  2. {n}=6
  3. 4=6
  4. 9=11
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Que vaut f"{4826.5:,.2f}" ?
  1. "4826.50"
  2. "4.826,50"
  3. "4,826.5"
  4. "4,826.50"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Que vaut f"{0.0375:.1%}" ?
  1. "0.0%"
  2. "3.8%"
  3. "3.7%"
  4. "37.5%"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Avec n = 0.125, quelle paire résulte de f"{n:.2f}" et de n == 0.125 ?
  1. "0.12", True
  2. "0.13", True
  3. "0.12", False
  4. "0.13", False
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Avec month = 11, day = 6, year = 2028, hour = 7 et minute = 3, que produit f"{month:02d}/{day:02d}/{year} {hour}:{minute:02d}" ?
  1. "11/06/2028 7:03"
  2. "06/11/2028 7:03"
  3. "11/6/2028 7:3"
  4. "11/06/2028 07:03"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Que produit f"|{'owl':>5}|" ?
  1. "|owl |"
  2. "| owl |"
  3. "| owl|"
  4. "| owl|"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Avec name = "seahorse", quels sont le contenu et la longueur de f"{name:6.4}" ?
  1. "seahorse", longueur 8
  2. "seah", longueur 4
  3. "seah ", longueur 6
  4. " seah", longueur 6
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Pour item = "Tea", qty = 2 et price = 3.75, que vaut f"{item:<5}{qty:>2}{qty * price:>7.2f}" ?
  1. "Tea 2 3.75"
  2. "Tea 2 7.50"
  3. "Tea 2 7.50"
  4. "Tea 2 7.500"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Que produit f"{'otter':3}" ?
  1. "ott"
  2. "ter"
  3. "otter"
  4. Lève ValueError.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Tu bloques sur ton propre exercice ? Aide aux Devoirs

Mots-Clés

69 Mots-Clés, chacun avec sa définition

A

Accolade littérale
Une accolade littérale est un caractère accolade affiché comme du texte dans une f-string en le doublant, pour le distinguer de la syntaxe d’un champ de remplacement.
L’accolade littérale dans f"{{open}}" affiche { autour de open sans demander à Python d’évaluer ce nom.
Accumulateur
Un accumulateur est une variable qui construit un résultat au fil des passages d’une boucle, comme un total numérique ou une nouvelle chaîne.
Un accumulateur de chaîne initialisé à "" peut recueillir uniquement les caractères autres que les espaces pour construire "abc" à partir de "a b c".
Affectation d’élément
L’affectation d’élément tente de remplacer un élément de séquence à un indice donné ; les chaînes la rejettent parce que leurs caractères ne peuvent pas être modifiés en place.
L’affectation d’élément dans word[1] = "x" lève TypeError pour une chaîne, même lorsque l’indice un est une position valide.
Alignement
L’alignement détermine où se trouve une valeur dans un champ rempli : < la place à gauche, > à droite et ^ la centre.
L’alignement à droite dans f"{'hi':>5}" place trois espaces avant le mot ; l’alignement à gauche les place après.
Approximation binaire
Une approximation binaire est une valeur en virgule flottante stockée proche d’une quantité décimale, qui peut influer sur l’arrondi à une limite d’affichage.
L’approximation binaire du flottant 2.675 est légèrement inférieure à la valeur décimale, donc la mise en forme à deux décimales donne "2.67".
Arrondi au pair
L’arrondi au pair choisit le chiffre conservé pair lorsqu’une valeur stockée se trouve exactement à mi-chemin entre deux résultats arrondis possibles.
L’arrondi au pair fait afficher les valeurs exactement à mi-chemin 0.125 et 0.375 sous les formes "0.12" et "0.38" avec deux décimales.
Assemblage
L’assemblage construit une chaîne à partir d’éléments de type chaîne en plaçant un séparateur choisi entre les éléments consécutifs, sans l’ajouter aux extrémités.
L’assemblage de ["home", "nora"] avec le séparateur "/" produit "home/nora", avec une barre oblique entre les éléments.

B

Borne de tranche
Une borne de tranche marque l’endroit où la sélection commence ou se termine ; une tranche parcourue vers l’avant inclut sa position de début et exclut sa position de fin.
Dans "garden"[:3], la borne de tranche trois est la fin exclue : d est donc laissé de côté et le résultat est "gar".

C

Caractère de remplissage
Un caractère de remplissage remplace les espaces ordinaires de remplissage lorsqu’il est placé directement avant un symbole d’alignement dans une spécification de format.
Un astérisque comme caractère de remplissage dans f"{'ok':*^6}" donne "**ok**" en remplissant les positions inutilisées autour du texte.
Caractères d’espacement
Les caractères d’espacement comprennent les espaces, les tabulations et les sauts de ligne, que les méthodes de texte peuvent supprimer aux extrémités ou utiliser comme séparations.
La chaîne " \t" ne contient que des caractères d’espacement ; leur suppression aux extrémités retire les deux caractères et laisse un texte vide.
Chaînage de méthodes
Le chaînage de méthodes appelle une méthode sur le résultat d’un appel précédent, de sorte que chaque opération reçoit la valeur renvoyée immédiatement avant elle.
Le chaînage de méthodes dans " OK ".strip().lower() renvoie d’abord "OK", puis convertit ce résultat en "ok".
Chaîne de caractères
Une chaîne de caractères est une séquence ordonnée de caractères Unicode de type str, utilisée pour stocker du texte comme des noms, des messages et des codes.
La chaîne "Hello, Nora" stocke la salutation, sa virgule et son espace dans une seule valeur textuelle ordonnée.
Champ de remplacement
Un champ de remplacement est une partie d’une f-string délimitée par des accolades, dont l’expression est évaluée lors de la construction de la chaîne.
Le champ de remplacement dans f"Total: {3 * 4}" calcule douze avant d’insérer le résultat après le libellé.
Champ vide
Un champ vide est un élément de zéro caractère conservé lorsque des séparateurs explicites sont adjacents ou se trouvent au début ou à la fin d’une chaîne.
Découper "a;;c" sur ";" conserve un champ vide en deuxième position, ce qui préserve une valeur manquante de l’enregistrement.
Comparaison sensible à la casse
Une comparaison sensible à la casse traite les majuscules et les minuscules comme des caractères différents, donc des mots correspondants peuvent tout de même échouer au test d’égalité.
Une comparaison sensible à la casse rend "Ready" == "ready" faux tant que les deux valeurs n’ont pas une casse uniforme.
Compteur
Un compteur est une variable qui enregistre le nombre de fois où une condition est remplie ; il commence généralement à zéro et augmente de un par correspondance.
Un compteur de chiffres pour "Bay 27" augmente pour 2 et 7 et finit avec deux correspondances après la boucle.
Concaténation
La concaténation combine des chaînes bout à bout en une seule, en conservant tous leurs caractères sans insérer automatiquement de séparateur.
La concaténation avec "rain" + "coat" donne "raincoat" ; pour ajouter une espace, il faut un élément qui en contient une.
Conversion avec map()
Une conversion avec map() applique une fonction à chaque élément d’entrée, ce qui permet à str de fournir les éléments de type chaîne exigés par join().
Une conversion avec map() dans ", ".join(map(str, [3, 8])) fournit des chaînes avant de les assembler en "3, 8".
Conversion de champ
La conversion de champ transforme une partie de texte dans le type nécessaire à la suite du travail, par exemple en convertissant une quantité découpée avec int() avant une addition.
La conversion de champ transforme le texte découpé "12" en entier avant qu’il puisse être additionné numériquement à cinq.
Conversion de point de code
La conversion de point de code utilise ord() pour obtenir le numéro Unicode d’un caractère et chr() pour obtenir le caractère correspondant à un tel numéro.
La conversion de point de code avec ord("A") donne 65, et la conversion inverse avec chr(65) donne "A".

E

enumerate()
La fonction enumerate() fournit chaque élément d’une séquence avec son indice, ce qui permet à une boucle d’utiliser les deux sans accès distinct.
Une boucle sur enumerate("sun") reçoit des paires indice-caractère qui commencent par 0, "s" et se terminent par 2, "n".
Erreur de décalage d’une unité
Une erreur de décalage d’une unité utilise une borne située une position trop tôt ou trop tard, souvent en confondant la longueur d’une séquence avec son dernier indice.
L’erreur de décalage d’une unité dans text[len(text)] provoque une lecture au-delà de la fin ; soustraire un donne l’indice du dernier caractère.

É

Évaluation en court-circuit
L’évaluation en court-circuit ignore un opérande booléen lorsqu’un résultat précédent détermine déjà la condition, ce qui permet à un premier test de protéger une opération ultérieure.
L’évaluation en court-circuit dans s.isdecimal() and int(s) > 0 ignore la conversion lorsque le test de caractères échoue.

F

F-string
Une f-string est un littéral de chaîne marqué par f qui évalue les expressions dans des champs entre accolades et insère leurs valeurs dans le texte obtenu.
Avec count = 7, la f-string f"Found {count}" construit "Found 7" sans conversion explicite du nombre en texte.
find()
La méthode find() renvoie l’indice de début de la première sous-chaîne correspondante, ou -1 si le texte recherché n’apparaît pas.
La recherche "lemon".find("mo") renvoie deux, tandis que "lemon".find("xy") renvoie moins un en l’absence de correspondance.
Format à virgule fixe
Le format à virgule fixe utilise le type f pour afficher un nombre avec un nombre choisi de décimales, en arrondissant et en ajoutant des zéros finaux si nécessaire.
Le format à virgule fixe .3f affiche l’entier cinq sous la forme "5.000", avec exactement trois décimales.
Format pourcentage
Le format pourcentage utilise % pour multiplier une fraction par 100 à l’affichage et ajouter un signe pourcentage, avec une précision décimale facultative.
Le format pourcentage .0% affiche 0.18 sous la forme "18%" ; fournir dix-huit multiplierait la valeur une seconde fois.

G

Groupement des milliers
Le groupement des milliers sépare les grands nombres en groupes lisibles à l’aide d’une virgule ou d’un trait de soulignement dans une spécification de format.
Le groupement des milliers dans f"{7654321:,}" affiche "7,654,321", en séparant chaque groupe de trois chiffres.

I

Immuabilité
L’immuabilité signifie qu’une valeur ne peut pas être modifiée en place ; une opération sur une chaîne doit produire une autre valeur pour donner un texte différent à une variable.
L’immuabilité des chaînes fait échouer name[0] = "B", tandis que name = "B" + name[1:] construit correctement un nouveau texte.
IndexError
Une IndexError indique qu’un accès par indice à une séquence ne correspond à aucun élément, par exemple lorsqu’on sélectionne une position au-delà de la fin d’une chaîne.
L’expression "cup"[3] lève IndexError, puisque ses trois caractères occupent les positions de zéro à deux.
Indice
Un indice est une position entière utilisée pour sélectionner un caractère d’une chaîne, le premier caractère étant à la position zéro.
Pour label = "desk", l’indice 2 sélectionne "s", puisque les positions commencent avec d à zéro.
Indice négatif
Un indice négatif sélectionne un caractère en comptant depuis la fin, où -1 désigne le dernier et -len(text) le premier.
Dans "cloud", l’indice négatif -1 sélectionne "d", tandis que -2 sélectionne le caractère précédent "u".
Instruction break
L’instruction break permet de sortir immédiatement de la boucle courante, par exemple pour arrêter une recherche de caractères après avoir traité le premier caractère correspondant.
Une recherche du premier chiffre dans "Zone 81" peut afficher 8 et exécuter break, laissant le 1 suivant sans traitement.

L

Largeur de champ
Une largeur de champ définit un nombre minimal de positions de caractères pour une valeur mise en forme, en ajoutant du remplissage tout en laissant entières les valeurs plus longues.
Une largeur de champ de cinq ajoute deux espaces après "cat", mais une largeur de deux conserve tout de même le mot entier.
Liste
Une liste est une collection ordonnée d’éléments écrite entre crochets ; le découpage d’une chaîne renvoie une liste dont les éléments sont des chaînes.
Après découpage de "oak,elm" sur une virgule, la liste contient deux éléments et l’indice un sélectionne la chaîne "elm".
Littéral de chaîne
Un littéral de chaîne est du texte écrit directement dans le code Python entre des guillemets assortis, qui marquent ses bornes sans faire partie de sa valeur.
Les littéraux de chaîne "open" et 'open' utilisent des guillemets extérieurs différents, mais stockent les mêmes quatre caractères.
Littéral de chaîne brute
Un littéral de chaîne brute possède un préfixe r qui conserve les barres obliques inverses comme caractères littéraux au lieu de traiter les séquences d’échappement ordinaires.
Le littéral de chaîne brute r"C:\new" conserve la barre oblique inverse avant new, ce qui empêche que cette paire devienne un saut de ligne.

M

Méthode de chaîne
Une méthode de chaîne est une fonction attachée aux valeurs de type chaîne, appelée avec un point et des parenthèses pour effectuer une opération sur le texte et renvoyer son résultat.
L’appel à la méthode de chaîne "hello".upper() renvoie "HELLO" ; omettre les parenthèses ne déclenche pas l’appel.

N

Nettoyage des caractères d’espacement
Le nettoyage des caractères d’espacement avec " ".join(text.split()) nettoie les extrémités et remplace les suites internes de caractères d’espacement par une seule espace ordinaire.
Le nettoyage des caractères d’espacement avec " ".join(text.split()) transforme " blue\n sky " en "blue sky", dont les espacements sont uniformes.
Nombre maximal de découpages
L’argument nombre maximal de découpages limite le nombre de coupures effectuées par split() ou rsplit(), en laissant le reste regroupé dans une partie non découpée.
Définir le nombre maximal de découpages à un coupe "a=b=c" depuis la gauche en "a" et "b=c", en conservant les signes égal suivants.

O

Occurrences sans chevauchement
Les occurrences sans chevauchement sont des occurrences qui ne réutilisent aucune position de caractère ; c’est la règle utilisée par count().
Les deux occurrences sans chevauchement dans "aaaa".count("aa") utilisent des positions de caractères différentes, donc le compte est de deux.
Ordre lexicographique
L’ordre lexicographique compare les séquences de gauche à droite, en utilisant le point de code du premier caractère différent ou en plaçant un préfixe plus court en premier.
L’ordre lexicographique place "19" avant "3", car leurs premiers caractères différents déterminent la comparaison.

P

Palindrome
Un palindrome est un texte qui se lit de la même façon dans les deux sens ; comparer une chaîne à sa version inversée permet donc de tester cette propriété.
Le palindrome "radar" réussit le test word == word[::-1] ; il faut uniformiser la casse lorsque celle-ci doit être ignorée dans un texte qui mélange majuscules et minuscules.
Parcours de chaîne
Le parcours de chaîne consiste à visiter les caractères dans un ordre choisi, généralement avec une boucle for directe ou une boucle while utilisant un indice.
Le parcours de chaîne sur "go!" visite g, puis o, puis !, ce qui permet de prendre une décision distincte pour chaque caractère.
Partition
Une partition sépare le texte une fois en un tuple de trois parties contenant le texte avant un séparateur, le séparateur et le texte après celui-ci.
La partition de "color=blue" sur "=" est ("color", "=", "blue") et conserve le séparateur au milieu.
Pas de tranche
Un pas de tranche est l’écart entier non nul entre les positions sélectionnées ; une valeur négative fait avancer la sélection à l’envers.
Un pas de tranche de deux dans "abcdef"[::2] sélectionne les indices zéro, deux et quatre, ce qui produit "ace".
Point de code Unicode
Un point de code Unicode est un nombre attribué à un caractère ; les chaînes Python stockent des points de code et len() les compte.
L’émoji "👍🏽" contient deux points de code Unicode, donc sa chaîne Python a une longueur de deux malgré son apparence.
Police à chasse fixe
Une police à chasse fixe donne à chaque position de caractère la même largeur visuelle, ce qui permet d’aligner des champs répétés de largeur fixe en colonnes de texte.
Une police à chasse fixe dans un terminal aligne les champs de coût de même largeur, car chaque position de caractère occupe la même place.
Position de début de recherche
Une position de début de recherche définit la première position examinée par une recherche, tout en conservant des indices renvoyés relatifs à la chaîne entière.
Une position de début de recherche de un dans "cocoa".find("co", 1) ignore l’occurrence à zéro et trouve celle à deux.
Précision de chaîne
La précision de chaîne limite le nombre de caractères de texte affichés par un champ et permet de combiner une longueur maximale de texte avec une largeur minimale.
La précision de chaîne dans f"{'sunshine':6.3}" affiche "sun" et trois espaces sans modifier le mot d’origine.

R

Réaffectation
La réaffectation fait référence à une valeur différente par l’intermédiaire d’une variable, sans modifier la valeur précédente ni les autres noms qui la désignent.
Lorsque a contient "red", la réaffectation avec a += "!" fait référence à "red!" par l’intermédiaire de a, tandis qu’une autre variable peut toujours contenir "red".
removeprefix()
La méthode removeprefix() supprime un début exact correspondant d’une chaîne et renvoie le texte d’origine lorsque ce début est absent.
L’appel "pretest".removeprefix("pre") donne "test", tandis qu’un préfixe absent laisse le texte inchangé.
removesuffix()
La méthode removesuffix() supprime une fin exacte correspondante d’une chaîne tout en préservant les autres caractères qu’une suppression aux extrémités pourrait retirer.
L’appel "report.txt".removesuffix(".txt") conserve "report", y compris le t final du nom de base.
Remplissage
Le remplissage ajoute des caractères pour atteindre une largeur minimale de champ, avec des espaces, des zéros ou un caractère choisi, tout en conservant les valeurs plus longues.
Le remplissage avec "5".zfill(3) produit "005", tandis que "1234", déjà plus long, reste inchangé pour une largeur de trois.
Remplissage par des zéros
Le remplissage par des zéros ajoute des zéros en tête pour atteindre une largeur numérique minimale, ce qui rend les entiers courts adaptés aux codes et aux parties des dates ou des heures.
Le remplissage par des zéros dans f"{4:02d}" affiche "04", ce qui permet à des minutes d’un chiffre de remplir un champ de deux chiffres.
Repliement de casse
Le repliement de casse supprime les distinctions de casse pour la comparaison, y compris certains changements propres à des langues que la conversion ordinaire en minuscules n’effectue pas.
Le repliement de casse transforme "Straße" et "STRASSE" en "strasse", ce qui permet de considérer ces graphies comme égales.
rfind()
La méthode rfind() renvoie l’indice de début de la dernière sous-chaîne correspondante, en utilisant les positions de la chaîne entière même si elle recherche depuis la droite.
La recherche "a-b-c".rfind("-") renvoie trois et localise le dernier trait d’union avec une position comptée depuis la gauche.

S

Séparateur
Un séparateur est la chaîne exacte qui marque une séparation lors d’un découpage ou qui est placée entre les éléments lors d’un assemblage ; il peut contenir plusieurs caractères.
Le séparateur ", " correspond à une virgule suivie d’une espace, donc il ne découpe pas la chaîne "oak,elm".
Séparateur vide
Un séparateur vide est la chaîne de zéro caractère utilisée avec join() pour réunir des éléments sans ajouter de caractères entre eux.
L’utilisation d’un séparateur vide dans "".join(["a", "b", "c"]) donne "abc" tout en conservant l’ordre des éléments.
Séquence d’échappement
Une séquence d’échappement utilise une barre oblique inverse et les caractères qui la suivent dans un littéral pour représenter un caractère comme un saut de ligne, une tabulation ou un guillemet.
Dans "up\ndown", la séquence d’échappement \n stocke un saut de ligne : l’affichage place donc les mots sur deux lignes.
Sous-chaîne
Une sous-chaîne est une séquence de caractères consécutifs à l’intérieur d’une autre chaîne, qui peut être sélectionnée par une tranche ou trouvée par une recherche.
Le texte "light" est une sous-chaîne de "daylight", mais "dyl" n’en est pas une, car ces lettres ne sont pas consécutives.
Spécification de format
Une spécification de format est un ensemble d’instructions d’affichage placé après les deux-points dans un champ, qui contrôle notamment la précision, le groupement ou la largeur.
Dans f"{8.5:.2f}", la spécification de format .2f sélectionne deux décimales et produit "8.50" pour l’affichage.
str.format()
La méthode str.format() remplit les champs entre accolades d’une chaîne à l’aide de ses arguments, les champs étant sélectionnés par ordre ou par indice d’argument explicite.
L’appel "{1}, {0}".format("Ada", "Lovelace") utilise str.format() pour placer le second argument avant le premier.
Suppression aux extrémités
La suppression aux extrémités retire les caractères indésirables aux extrémités d’une chaîne, en utilisant par défaut les caractères d’espacement ou un ensemble précisé de caractères à supprimer.
La suppression aux extrémités de "..hello!!" avec l’ensemble de caractères ".!" conserve "hello" et laisse le texte intérieur intact.

T

Test d’appartenance
Un test d’appartenance utilise in ou not in pour vérifier si une sous-chaîne apparaît et renvoie un booléen sans donner sa position.
Le test d’appartenance "ice" in "spice" est vrai, tandis que "Ice" avec une majuscule ne correspond pas au même texte.
Test de caractères
Un test de caractères vérifie si les caractères d’une chaîne respectent une règle et renvoie un booléen ; des tests comme isalpha() rejettent aussi les chaînes vides.
Le test de caractères "lake9".isalnum() est vrai, tandis que l’espace dans "lake 9" fait échouer cette version.
Test de chiffres décimaux
Un test de chiffres décimaux, isdecimal(), accepte les chaînes non vides composées de chiffres décimaux et rejette les signes, les points décimaux et les espaces.
Après suppression des espaces extérieures, le test de chiffres décimaux accepte "007", qui se convertit en l’entier sept.
Tranche
Une tranche sélectionne des caractères à l’aide d’un début, d’une fin exclue et d’un pas facultatif, puis renvoie le texte sélectionné sous forme de chaîne.
La tranche "window"[1:4] renvoie "ind" en sélectionnant les positions de un à trois et en excluant la position quatre.

V

Valeur de retour
Une valeur de retour est le résultat qu’une fonction ou une méthode renvoie à son appelant et qui peut être enregistré, testé ou transmis à une autre opération.
La valeur de retour de text.upper() est du texte en majuscules ; l’affecter à text permet de la conserver pour plus tard.

À propos de cette unité

Par StudeliSignaler une erreur

Crée ton propre Matériel d'Étude

Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.

Commencer