Les chaînes de caractères ont une unique opération intégrée: l'opérateur
% avec la chaîne comme argument gauche et un format comme
argument droit, est interprété de la même façon que dans la
fonction C sprintf(). La chaîne résultat du formatage est
retournée.
L'argument de droite doit être un tuple avec un élément par élément %
spécifié dans le format. Si le format ne demande qu'un seul élément, alors
l'argument de droite peut ne pas être un tuple.1
Les caractères de format autorisés sont les suivants:
%, c, s, i, d, u, o,
x, X, e, E, f, g, G.
Le caractère * avec un entier permet de spécifier la taille ou
la précision du formatage. Les caractères spéciaux -, +, espace,
# et 0 sont également compris. Les indicateurs h,
l ou L sont acceptés mais ignorés. Le format %s
assure la conversion de tout objet Python en une chaîne de caractères en
utilisant str(). Les fonctionnalités ANSI associées à %p et
%n ne sont pas disponibles. Enfin, étant donné que les chaînes de
caractères en Python ont une taille explicite, le format %s ne présuppose
pas la présence de '\0' à la fin de la chaîne.
Pour des raisons de sûreté de fonctionnement, les précisions associées aux
nombres flottants sont limitées à 50, les formats %f pour les nombres
dont la valeur absolue est supérieure à 1e25 sont remplacés
par %g.2
Toute autre erreur lève une exception.
Si l'argument de droite de la chaîne à formater est un dictionnaire (ou toute autre table associative), ce sont alors les clefs spécifiées dans la chaîne de formatage qui permettent de retrouver les valeurs du dictionnaire à substituer dans cette chaîne. La syntaxe est alors le "%" suivi de la clef entre parenthèses et les autres spécificateurs de format. Par exemple (dans ce cas, c'est le dictionnaire global qui est utilisé):
>>> nombre = 2 >>> langage = 'Python' >>> print '%(langage)s possède %(nombre)03d types de guillemets.' % vars() Python possède 002 types de guillemets.
Dans ce cas, aucun spécificateur de format * ne peut être utilisé,
car il faudrait une liste séquentielle de paramètres.
Des fonctions supplémentaires sont disponibles dans le
module string et dans le module intégré re.
Notes