Question 1Quel est le résultat de string.Template("Hi $name").substitute(name="Léa") ?
string et textwrap — Constantes de caractères, templates et mise en forme
Constantes de caractères string.ascii_letters / digits, substitution $name via string.Template, retrait d'indentation par textwrap.dedent et repli par fill — démontré sur un e-mail de confirmation.
À quoi servent string et textwrap
string et textwrap sont des modules d'aide qui complètent la manipulation de chaînes au quotidien. string fournit des constantes de caractères (ensembles de lettres, chiffres et symboles) et Template (substitution de template style $name) ; textwrap gère la mise en forme des chaînes multi-lignes (suppression d'indentation et repli de largeur). Tu y recours quand les f-strings ou replace ne suffisent pas.
string — Constantes de caractères et substitution Template
Le module string offre deux types de fonctionnalités. La première : des constantes de caractères comme string.ascii_letters (52 lettres), string.digits (0–9) et string.punctuation (symboles), qui t'évitent de définir toi-même "qu'est-ce qu'une lettre / un chiffre".
La seconde : string.Template — tu intègres des variables préfixées par $ style $name dans une chaîne, puis tu les remplaces avec substitute(name="valeur"). Cela ressemble aux f-strings (f"{name}"), mais Template a un parseur simple et sûr, ce qui en fait un bon choix quand le template lui-même provient d'une entrée utilisateur (comme les templates de corps d'e-mail).
$name dans une chaîne par des valeurs via substitute.| Constante / Classe | Contenu | Usage |
|---|---|---|
| string.ascii_lowercase | abcdefghijklmnopqrstuvwxyz | 26 lettres minuscules |
| string.ascii_uppercase | ABCDEFGHIJKLMNOPQRSTUVWXYZ | 26 lettres majuscules |
| string.ascii_letters | concaténation des deux (52 caractères) | vérif de lettres, génération de chaînes aléatoires |
| string.digits | 0123456789 | vérif de chiffres |
| string.punctuation | ! " # $ % & ' ... etc | vérif de symboles |
| string.Template(s) | classe template style $name | corps d'e-mail, templates de notification |
textwrap — Supprimer l'indentation des triple-quotes et replier la largeur
textwrap est un module de la bibliothèque standard pour embellir les chaînes. Les deux fonctions que tu utiliseras le plus sont textwrap.dedent (qui enlève l'indentation commune en tête d'un texte écrit en triple-quotes) et textwrap.fill (qui replie une chaîne longue à une largeur donnée).
Quand tu écris des chaînes multi-lignes comme """...""" dans le code, l'indentation au niveau du source se retrouve cuite dans la chaîne elle-même. dedent n'enlève que l'espace blanc commun en tête, donc ton code reste joliment indenté pendant que la chaîne ressort propre.
| Fonction | Ce qu'elle fait | Retourne |
|---|---|---|
| textwrap.dedent(text) | supprime l'indentation commune en tête | la chaîne nettoyée |
| textwrap.fill(text, width=N) | replie à la largeur N en une seule chaîne | une chaîne unique avec sauts de ligne |
| textwrap.wrap(text, width=N) | découpe en lignes de largeur N | liste de chaînes |
| textwrap.shorten(text, w) | si le résultat ne tient pas dans la largeur N, termine par [...] | la chaîne tronquée |
import textwrap
# dedent : enlever l'indentation d'une chaîne triple-quote
raw = """
Bonjour.
Quel beau temps aujourd'hui.
"""
print(textwrap.dedent(raw).strip())
# Bonjour.
# Quel beau temps aujourd'hui.
# fill : repli (l'anglais le montre le plus clairement)
long_text = "Python is a language that lets you work quickly and integrate systems."
print(textwrap.fill(long_text, width=30))
# Python is a language that
# lets you work quickly and
# integrate systems.
Combine dedent avec strip
Les chaînes triple-quotes commencent et finissent souvent par un saut de ligne, donc le one-liner textwrap.dedent(raw).strip() (dedent + suppression des espaces en début/fin) est un pattern courant. strip est une méthode intégrée des chaînes qui enlève les espaces blancs (sauts de ligne inclus) des deux extrémités.
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Lequel supprime l'indentation commune en tête d'un texte écrit en triple-quotes (avec indentation au niveau du source) ?
Question 3Que fait textwrap.fill(text, width=20) ?