Python Language str.format et f-strings: mettre en forme les valeurs dans une chaîne


Exemple

Python fournit des fonctionnalités d'interpolation et de formatage de chaînes via la fonction str.format , introduite dans la version 2.6 et des f-strings introduites dans la version 3.6.

Compte tenu des variables suivantes:

i = 10
f = 1.5
s = "foo"
l = ['a', 1, 2]
d = {'a': 1, 2: 'foo'}

Les énoncés suivants sont tous équivalents

"10 1.5 foo ['a', 1, 2] {'a': 1, 2: 'foo'}"
>>> "{} {} {} {} {}".format(i, f, s, l, d)

>>> str.format("{} {} {} {} {}", i, f, s, l, d)

>>> "{0} {1} {2} {3} {4}".format(i, f, s, l, d)

>>> "{0:d} {1:0.1f} {2} {3!r} {4!r}".format(i, f, s, l, d)

>>> "{i:d} {f:0.1f} {s} {l!r} {d!r}".format(i=i, f=f, s=s, l=l, d=d)
>>> f"{i} {f} {s} {l} {d}"

>>> f"{i:d} {f:0.1f} {s} {l!r} {d!r}"

Pour référence, Python prend également en charge les qualificateurs de style C pour le formatage des chaînes. Les exemples ci-dessous sont équivalents à ceux ci-dessus, mais les versions de str.format sont préférées en raison des avantages de la flexibilité, de la cohérence de la notation et de l'extensibilité:

"%d %0.1f %s %r %r" % (i, f, s, l, d)

"%(i)d %(f)0.1f %(s)s %(l)r %(d)r" % dict(i=i, f=f, s=s, l=l, d=d)

Les accolades str.format pour l'interpolation dans str.format peuvent également être numérotées pour réduire la duplication lors du formatage des chaînes. Par exemple, les éléments suivants sont équivalents:

"I am from Australia. I love cupcakes from Australia!"
>>> "I am from {}. I love cupcakes from {}!".format("Australia", "Australia")

>>> "I am from {0}. I love cupcakes from {0}!".format("Australia")

Alors que la documentation officielle de python est, comme d'habitude, suffisamment complète, pyformat.info propose un grand nombre d'exemples avec des explications détaillées.

De plus, les caractères { et } peuvent être échappés en utilisant des crochets doubles:

"{'a': 5, 'b': 6}"
>>> "{{'{}': {}, '{}': {}}}".format("a", 5, "b", 6)

>>> f"{{'{'a'}': {5}, '{'b'}': {6}}"

Voir Formatage de chaîne pour plus d'informations. str.format() été proposé dans PEP 3101 et les chaînes de caractères dans PEP 498 .