Introduction
Bienvenue dans le laboratoire de formatage de chaînes de caractères (string formatting) en Python. Le formatage correct des chaînes est une tâche fondamentale dans tout langage de programmation, utilisé pour tout, des simples instructions print à la génération de rapports complexes et de pages web. Python offre plusieurs méthodes pour formater les chaînes, chacune avec ses propres avantages et cas d'utilisation.
Dans ce laboratoire, vous explorerez l'évolution du formatage de chaînes en Python. Vous commencerez par l'opérateur traditionnel %, puis passerez à la méthode plus flexible str.format(). Vous maîtriserez également les f-Strings, l'approche moderne et recommandée introduite dans Python 3.6, et apprendrez à formater les nombres efficacement. Enfin, vous découvrirez les chaînes Template, une option sécurisée pour gérer des modèles (templates) provenant de sources non fiables.
À la fin de ce laboratoire, vous aurez une compréhension approfondie de la manière de choisir et d'utiliser la bonne technique de formatage de chaînes pour vos projets Python.
Utilisation de l'opérateur %
Dans cette étape, vous allez découvrir le formatage de chaînes de caractères de style ancien utilisant l'opérateur %. Cette méthode, héritée de la fonction printf du langage C, utilise des spécificateurs de format tels que %s pour les chaînes de caractères et %d pour les entiers afin d'insérer des valeurs dans une chaîne.
Bien que cette méthode fonctionne, elle présente quelques particularités et est moins flexible que les alternatives modernes. Pour tout nouveau code, il est fortement recommandé d'utiliser les f-Strings ou la méthode str.format().
Note : Si vous n'êtes pas familier avec l'utilisation de WebIDE (similaire à VS Code), veuillez vous familiariser avec celui-ci lors de ce lab.
Tout d'abord, ouvrez le fichier step1.py depuis l'explorateur de fichiers situé à gauche.
Maintenant, ajoutez le code suivant dans step1.py pour voir comment formater une chaîne de caractères et un entier.
## Opérateur % : formatage de chaînes de caractères de style ancien (non recommandé pour le nouveau code)
name = 'Pete'
print('Hello %s' % name) ## %s = marqueur de position pour chaîne de caractères
num = 5
print('I have %d apples' % num) ## %d = marqueur de position pour entier
Sauvegardez le fichier et exécutez-le depuis le terminal pour voir le résultat.
python3 step1.py
Vous devriez voir la sortie suivante, où %s a été remplacé par la valeur de name et %d par la valeur de num.
Hello Pete
I have 5 apples
Utilisation de str.format
Dans cette étape, vous allez explorer la méthode str.format(), introduite dans Python 3 (et rétroportée vers 2.7) comme une manière plus puissante et flexible de formater les chaînes de caractères. Cette méthode utilise des accolades {} comme espaces réservés (placeholders).
Vous pouvez passer des arguments à format(), et ils seront insérés dans les espaces réservés dans l'ordre. Vous pouvez également utiliser des nombres à l'intérieur des accolades pour faire référence aux arguments par leur position.
Ouvrez le fichier step2.py depuis l'explorateur de fichiers.
Ajoutez le code suivant à step2.py. Le premier exemple utilise des accolades vides, et le second utilise des arguments positionnels.
## str.format() method: modern string formatting (Python 2.7+)
name = 'John'
age = 20
## Arguments are inserted in order
print("Hello I'm {}, my age is {}".format(name, age))
## Arguments are inserted based on position
print("Hello I'm {0}, my age is {1}".format(name, age))
Enregistrez le fichier et exécutez-le dans le terminal.
python3 step2.py
Les deux instructions print produiront le même résultat, démontrant les deux façons d'utiliser str.format().
Hello I'm John, my age is 20
Hello I'm John, my age is 20
Littéraux de Chaîne Formatés ou f-Strings
Dans cette étape, vous allez maîtriser les f-Strings, la méthode recommandée pour formater les chaînes de caractères dans Python 3.6 et les versions ultérieures. Une f-String est un littéral de chaîne préfixé par f ou F. Ces chaînes vous permettent d'intégrer des expressions Python directement à l'intérieur, enfermées entre accolades {}.
Les f-Strings sont évaluées à l'exécution (runtime), ce qui les rend non seulement concises et lisibles, mais aussi très puissantes.
Ouvrez le fichier step3.py depuis l'explorateur de fichiers.
Syntaxe de Base et Expressions
Tout d'abord, examinons la syntaxe de base et comment intégrer des expressions. Ajoutez le code suivant à step3.py.
## f-string: recommended way to format strings (Python 3.6+)
name = 'Elizabeth'
print(f'Hello {name}!') ## f prefix allows expressions in {}
## f-strings support expressions: can include calculations inside {}
a = 5
b = 10
print(f'Five plus ten is {a + b} and not {2 * (a + b)}.')
f-Strings sur Plusieurs Lignes (Multiline)
Vous pouvez également créer des chaînes sur plusieurs lignes en englobant la f-String entre parenthèses. Ajoutez cet exemple à step3.py.
name = 'Robert'
messages = 12
multiline_string = (
f'Hi, {name}. '
f'You have {messages} unread messages'
)
print(multiline_string)
Le spécificateur = pour le Débogage
À partir de Python 3.8, vous pouvez utiliser le spécificateur = pour imprimer automatiquement à la fois le nom de l'expression et sa valeur, ce qui est très utile pour le débogage. Ajoutez ce dernier bloc de code à step3.py.
## = specifier: prints both variable name and value (Python 3.8+)
from datetime import datetime
now = datetime.now().strftime("%b/%d/%Y - %H:%M:%S")
print(f'date and time: {now=}')
Maintenant, enregistrez le fichier et exécutez-le depuis le terminal.
python3 step3.py
Vous verrez la sortie des trois exemples. Notez que la date et l'heure dans votre sortie seront différentes.
Hello Elizabeth!
Five plus ten is 15 and not 30.
Hi, Robert. You have 12 unread messages
date and time: now='...'
Formatage des Chiffres
Dans cette étape, vous apprendrez à formater les données numériques au sein des f-Strings. C'est une fonctionnalité puissante pour présenter les données dans un format lisible par l'homme. Nous aborderons l'ajout de séparateurs de milliers, l'arrondi des nombres à virgule flottante (floating-point numbers) et l'affichage des nombres en pourcentage.
Ouvrez le fichier step4.py depuis l'explorateur de fichiers.
Ajoutez le code suivant à step4.py pour pratiquer différentes techniques de formatage numérique.
## Adding thousands separator
a = 10000000
print(f"Number with separators: {a:,}")
## Rounding a float to 2 decimal places
b = 3.1415926
print(f"Rounded number: {b:.2f}")
## Showing a number as a percentage with 2 decimal places
c = 0.816562
print(f"As a percentage: {c:.2%}")
Chaque spécificateur de format suit les deux-points : à l'intérieur des accolades.
:,ajoute une virgule comme séparateur de milliers.:.2fformate le nombre comme un flottant avec deux décimales.:.2%multiplie le nombre par 100 et l'affiche en pourcentage avec deux décimales.
Enregistrez le fichier et exécutez-le depuis le terminal.
python3 step4.py
Votre sortie devrait ressembler à ceci :
Number with separators: 10,000,000
Rounded number: 3.14
As a percentage: 81.66%
Pour votre référence, voici un tableau présentant davantage d'options de formatage numérique disponibles dans les f-Strings :
| Nombre | Format | Sortie | Description |
|---|---|---|---|
| 3.1415926 | {:.2f} |
3.14 | Formater le flottant à 2 décimales |
| 1000000 | {:,} |
1,000,000 | Format numérique avec séparateur virgule |
| 0.35 | {:.2%} |
35.00% | Formater en pourcentage |
| 1000000000 | {:.2e} |
1.00e+09 | Notation exponentielle |
Utilisation des Chaînes Template
Dans cette étape, vous découvrirez les chaînes Template issues du module intégré string de Python. Bien que moins puissantes que les f-Strings, elles constituent un choix plus sûr lorsque vous manipulez des modèles de chaînes qui pourraient être générés par des utilisateurs. Leur complexité réduite empêche l'exécution de code arbitraire, ce qui peut représenter un risque de sécurité avec des méthodes comme str.format() si elles ne sont pas utilisées avec précaution.
Les chaînes Template utilisent le signe dollar $ pour marquer les espaces réservés (placeholders) (par exemple, $name).
Ouvrez le fichier step5.py depuis l'explorateur de fichiers.
Ajoutez le code suivant à step5.py. Vous devrez importer la classe Template, créer un objet template, puis utiliser la méthode substitute() pour insérer les valeurs.
from string import Template
name = 'Elizabeth'
## Create a Template object
t = Template('Hey $name!')
## Use the substitute() method to replace the placeholder
result = t.substitute(name=name)
print(result)
La méthode substitute() accepte des arguments par mots-clés (keyword arguments) où les clés correspondent aux noms des espaces réservés dans le modèle.
Enregistrez le fichier et exécutez-le depuis le terminal.
python3 step5.py
La sortie affichera la chaîne substituée.
Hey Elizabeth!
Résumé
Félicitations pour avoir terminé le laboratoire sur le formatage de chaînes de caractères en Python !
Dans ce laboratoire, vous avez exploré les principales méthodes de formatage de chaînes en Python. Vous avez appris :
- L'opérateur
%: Le formatage de style C, ancien, qui n'est plus recommandé pour le nouveau code. - La méthode
str.format(): Une méthode plus puissante et flexible qui utilise des espaces réservés{}. - Les f-Strings : L'approche moderne, concise et fortement recommandée pour Python 3.6 et supérieur, qui permet d'intégrer des expressions directement dans les chaînes.
- Le formatage des nombres (Number Formatting) : Comment utiliser les spécificateurs de format (format specifiers) dans les f-Strings pour contrôler la présentation des nombres, y compris les séparateurs, la précision et les pourcentages.
- Les chaînes
Template: Un mécanisme plus simple et plus sûr pour la substitution de chaînes, idéal pour gérer des modèles provenant de sources externes ou non fiables.
En comprenant les forces et les faiblesses de chaque méthode, vous pouvez désormais choisir l'outil le plus approprié pour toute tâche de formatage de chaînes que vous rencontrerez dans votre parcours de programmation Python.



