f-strings Python
Les f-strings ont fait leur apparition avec la version 3.6 de Python.
Fonctionnement général
Les f-strings permettent d’insérer des variables ou expressions à l’intérieur d’une chaine de caractères et de les mettre en forme.
Cette fonctionnalité simplifie énormément la manière d’utiliser les chaînes de caractères tout en améliorant la lisibilité du code.
Pour qu’une chaîne de caractères soit considérée comme un f-string, il suffit de la préfixer de la lettre ‘f’ .
Pour insérer une variable/expression dans une f-string, il suffit de la mettre entre accolades.
prenom = "Ragnar"
print(f"Bonjour {prenom}") (1)
prixHT=15
print(f"Prix TTC = {prixHT * 1.20}") (2)
# Résultat d'exécution
# Bonjour Ragnar
# Prix TTC = 18.0
1 | {prenom} est remplacé par le contenu de cette varaible — ici, “Ragnar” — dans la f-string |
2 | {prixHT * 1.2} est remplacé par le résultat de l’expression — ici, 15 * 1.2 = 18 — dans la f-string |
Options standards de formatage
Pour mettre en forme les nombres et/ou chaînes de caractères, on rajoute une spécification de format précédée de ‘:’ dans les accolades de la f-string où figurent les variables/expressions à remplacer.
import math
print(f"Valeur de PI approchée = {math.pi:.2f}") (1)
# Resultat d'exécution :
# Valeur de PI approchée = 3.14
1 | la spécification de format “:.2f” spécifie qu’il faut remplacer π par sa valeur approchée à 2 chiffres après la virgule. |
La forme générale simplifiée d’une spécification de format est :
[<alignement>][<signe>][<largeur>][<groupage>][.<précision>][<type>]
avec :
-
<alignement> : détermine où la variable/expression est alignée dans la zone d’affichage qui lui est réservée (voir option <largeur>)
-
‘>’ aligne à droite
-
‘<’ aligne à gauche
-
‘^’ aligne au centre
-
‘=’ utilise le caractère de remplissage à gauche pour remplir complètement la zone
-
-
<signe> : détermine l’affichage du signe
-
‘+’ indique que le signe + doit être affiché ainsi que le -
-
‘-’ indique que le signe ‘-’ doit être affiché (par defaut)
-
‘ ’ (espace) : n’affiche pas le ‘+’ d’un nombre positif mais insére un espace à la place
-
-
<largeur> : détermine la place qui doit être réservée pour l’affichage de la variable/expression
Pour les nombres, la largeur prend en compte la partie entière, la partie décimale mais aussi le séparateur décimal et les éventuels séparateurs des milliers
-
<groupage> : détermine le séparateur des milliers
-
‘_’ : Ex. : 1_789 (← année de la révolution française)
-
‘,’ : Ex. : 96,485.332 (← constante de Faraday)
-
-
<précision> : détermine le nombre de chiffres après la virgule
-
<type> : détermine le mode d’affichage
-
‘e’ ou ‘E’ : affiche en notation scientifique
-
‘f’ ou ‘F’ : affiche en virgule fixe
-
‘b’ : affiche en binaire
-
‘x’ ou ‘X’ : affiche en hexadécimal
-
‘o’ : affiche en octal
-
‘%’ : affiche en pourcentage
-
print(f"Vitesse de la lumière dans le vide : |{299792458:>+15}| m/s")
# Affiche : Vitesse de la lumière dans le vide : | +299792458| m/s
print(f"Vitesse de la lumière dans le vide : |{299792458:>+15,}| m/s")
# Affiche : Vitesse de la lumière dans le vide : | +299,792,458| m/s
print(f"Vitesse de la lumière dans le vide : {299792458:3.0e} m/s")
# Affiche : Vitesse de la lumière dans le vide : 3e+08 m/s
print(f"T° du zéro absolu : {-273.15:_>10}°C")
# Affiche : T° du zéro absolu : ___-273.15°C
print(f"T° du zéro absolu : {-273.15:_=10}°C")
# Affiche : T° du zéro absolu : -___273.15°C
TVA = 0.20
print(f"Taxe valeur ajoutée : {TVA:.0%}")
# Affiche : Taxe valeur ajoutée : 20%
kibi=1024
print(f"kibi : {kibi:4.0e} (dec) / {kibi:#b} (bin)/ {kibi:#x} (hex)")
# Affiche : kibi : 1e+03 (dec) / 0b10000000000 (bin)/ 0x400 (hex)
Options avancées
-
L’affichage des heures/dates est également pris en charge par les f-strings :
Exemple :from datetime import datetime y2038 = datetime(2038, 1, 19, 3, 14, 7) print(f"Bug de l\'an 2038 : {y2038:%A %B %d, %Y at %H:%M:%S %p}") (1) # Affiche : # Bug de l'an 2038 : Tuesday January 19, 2038 at 03:14:07 AM
1 Noter la nécessité “d’échapper” l’apostrophe contenue dans “Bug de l’an 2038” avec le caractère ‘\’ Voir strftime() and strptime() Behavior
pour une liste détaillée des codes de format disponibles pour les dates
-
Pour afficher des accolades dans une f-string il faut les doubler pour leur ôter leur signification particulière
Exemples :print(f"Nombres pairs entre 1 et 10 : {{2; 4; 6; 8; 10}}") # Affiche : # Nombres pairs entre 1 et 10 : {2; 4; 6; 8; 10} primes = [1, 3, 5, 7] primes_str = "; ".join(str(p) for p in primes) print(f"Nombres premiers entre 1 et 10 : {{{primes_str}}}") # Affiche : # Nombres premiers entre 1 et 10 : {1; 3; 5; 7}
-
Dans une f-string — comme dans une chaîne standard de Python — le caractère ‘\’ a un sens particulier : il permet d’insérer des caractères spéciaux tels que :
-
\'
→ une apostrophe dans une chaîne délimitée par des apostrophesExemple :christmas = 'c\'est Noël !
-
\"
→ un guillemet double dans une chaîne délimitée par des guillemets doubleExemple :bestseller = "\"l'étranger\" d'Albert Camus"
-
\\
→ un backslash littéral -
\n
→ un saut de ligne -
\t
→ une tabulation.
Pour empêcher l’interprétation de ce backslash, il faut préfixer la chaîne de caractères par la lettre ‘r’ (‘r’ pour “raw string” c.-à-d. “chaîne brute”).
Ce caractère est combinable avec le ‘f’ des f-strings.
Exemples :print("Bonjour\n\tmonde !") (1) # Affiche : # Bonjour # monde ! print(r"Bonjour\n\tmonde !") (2) # Affiche : # Bonjour\n\tmonde ! print(fr'\n -> {"retour à la ligne":_^20} / \t -> {"tabulation":_^20}') (3) # Affiche : # \n -> _retour à la ligne__ / \t -> _____tabulation_____ syspath = r"C:\windows\system32" print(f"Répertoire Système Windows : \n\t-> {syspath:.>32}") (4) # Affiche : #Répertoire Système Windows : # -> .............C:\windows\system32
1 ‘\n’ et ‘\t’ sont interprétés 2 ‘\n’ et ‘\t’ NE sont PAS interprétés 3 ‘\n’ et ‘\t’ NE sont PAS interprétés mais les spécificateurs de format le sont 4 ‘\n’, ‘\t’ et les spécificateurs de format sont interprétés -
🕮 Sources :
-
Datta, Surya Sekhar. String Prefixes in Python: What are f-strings and r-strings in Python
Medium, 15 septembre 2024. Consulté le 18 septembre 2025.
-
Piquerez, Thibaut. f-strings — Documentation Bibliothèques Python 1.0.0
. HE-ARC, 31 décembre 2016. Consulté le 18 septembre 2025.
-
Python Software Foundation. Format Specification Mini-Language
. Python 3 Documentation. Consulté le 18 septembre 2025.
🞄 🞄 🞄