Apprenez en lisant dans l'ordre

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.

Quand utiliser string vs textwrap
module stringconstantes + Templatevérif lettre / chiffretemplates de mailmodule textwrapdedent + fillsuppression d'indentrepli de largeurusagesusages
string brille pour les ensembles de caractères et la substitution de template, tandis que textwrap sert à nettoyer l'apparence des chaînes multi-lignes. Les deux sont des modules de la bibliothèque standard, et comme leurs cas d'usage ne se chevauchent pas, le plus simple est de les retenir par rôle.

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 (09) 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).

Ce que string offre
constantesascii_letters / digits"que des lettres ?"vérif / générationTemplatetemplate style $namesubstitute(name=valeur)remplacement
Les constantes de caractères servent à vérifier ou générer des "lettres / chiffres / symboles". Template est un moteur de template léger et sûr qui remplace les placeholders style $name dans une chaîne par des valeurs via substitute.
Constante / ClasseContenuUsage
string.ascii_lowercaseabcdefghijklmnopqrstuvwxyz26 lettres minuscules
string.ascii_uppercaseABCDEFGHIJKLMNOPQRSTUVWXYZ26 lettres majuscules
string.ascii_lettersconcaténation des deux (52 caractères)vérif de lettres, génération de chaînes aléatoires
string.digits0123456789vérif de chiffres
string.punctuation! " # $ % & ' ... etcvérif de symboles
string.Template(s)classe template style $namecorps d'e-mail, templates de notification

Construis un template d'e-mail de confirmation de commande avec string.Template, puis intègre un nom de client et un numéro de commande.

① Importe le module string.

② Affiche la longueur totale de la constante de lettres sous la forme Lettres : ◯ (tu obtiendras 52 — majuscules + minuscules).

③ Affiche le contenu de la constante de chiffres sous la forme Chiffres : ◯◯.

④ Construis un objet Template à partir de la chaîne template "Hello, $name! Order #$order_id is ready.".

⑤ Affiche le résultat de la substitution avec name="Alice" et order_id=1234.

(Si tu exécutes correctement, une explication apparaîtra.)

Éditeur Python

Exécuter le code pour voir le résultat

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.

Comment fonctionne textwrap.dedent
chaîne dans le source Bonjour Beau tempstextwrap.dedentchaîne nettoyéeBonjourBeau temps
Enlève l'indentation commune en tête cuite dans une chaîne triple-quote, en laissant la structure du code intacte tout en nettoyant la chaîne elle-même. Détecte automatiquement le nombre d'espaces en tête partagés par chaque ligne et supprime cette quantité.
FonctionCe qu'elle faitRetourne
textwrap.dedent(text)supprime l'indentation commune en têtela chaîne nettoyée
textwrap.fill(text, width=N)replie à la largeur N en une seule chaîneune chaîne unique avec sauts de ligne
textwrap.wrap(text, width=N)découpe en lignes de largeur Nliste 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.

Nettoie un template de message d'erreur écrit avec indentation en utilisant dedent, puis replie une phrase anglaise avec fill.

① Importe textwrap.

② Définis une chaîne anglaise de 2 lignes indentée de 4 espaces dans une triple-quote (avec des lignes vides au tout début et à la fin).

③ Enlève l'indentation et les espaces autour, puis affiche --- après dedent --- avant le résultat formaté.

④ Replie la phrase anglaise "Python is a language that lets you work quickly and integrate systems." à une largeur de 30 caractères, et affiche --- après fill --- avant le résultat.

Éditeur Python

Exécuter le code pour voir le résultat
QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Quel est le résultat de string.Template("Hi $name").substitute(name="Léa") ?

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) ?