Format de chaîne dans Python
En plus de la transformation de texte et de l’exécution d’opérations de base, comme la mise en correspondance et la recherche, la mise en forme du texte est essentielle quand vous présentez des informations. La méthode la plus simple de présenter des informations de texte avec Python est la fonction print()
. Ce qu’il faut avant tout c’est que print()
soit en mesure d’utiliser les variables contenant les informations et les autres structures de données présentes dans les chaînes.
Dans cette unité, vous apprenez plusieurs méthodes valides pour ajouter des valeurs de variables dans du texte en utilisant Python.
Mise en forme avec le signe de pourcentage (%
)
L’espace réservé pour la variable dans la chaîne est %s
. Après la chaîne, utilisez un autre caractère %
suivi du nom de la variable. L’exemple suivant illustre la mise en forme à l’aide du caractère %
:
mass_percentage = "1/6"
print("On the Moon, you would weigh about %s of your weight on Earth." % mass_percentage)
Sortie : On the Moon, you would weigh about 1/6 of your weight on Earth.
L’utilisation de plusieurs valeurs change la syntaxe, car il faut ajouter des parenthèses pour entourer les variables qui sont transmises :
print("""Both sides of the %s get the same amount of sunlight, but only one side is seen from %s because the %s rotates around its own axis when it orbits %s.""" % ("Moon", "Earth", "Moon", "Earth"))
Sortie : Both sides of the Moon get the same amount of sunlight, but only one side is seen from Earth because the Moon rotates around its own axis when it orbits Earth.
Conseil
Bien que cette méthode reste un moyen valide de mettre en forme les chaînes, elle peut entraîner des erreurs et affecter la clarté du code quand vous avez plusieurs variables à traiter. L’une des deux autres options de mise en forme décrites dans cette unité est mieux adaptée à cette situation.
Méthode format()
La méthode .format()
utilise des accolades ({}
) comme espaces réservés dans une chaîne, ainsi que l’attribution de variable pour remplacer le texte.
mass_percentage = "1/6"
print("On the Moon, you would weigh about {} of your weight on Earth.".format(mass_percentage))
Sortie : On the Moon, you would weigh about 1/6 of your weight on Earth.
Vous n’avez pas besoin d’attribuer plusieurs fois les variables répétées, ce qui réduit le bavardage puisque vous devez attribuer moins de variables :
mass_percentage = "1/6"
print("""You are lighter on the {0}, because on the {0} you would weigh about {1} of your weight on Earth.""".format("Moon", mass_percentage))
Sortie : You are lighter on the Moon, because on the Moon you would weigh about 1/6 of your weight on Earth.
Au lieu d’accolades vides, vous utilisez des nombres. {0}
signifie que le premier argument (index zéro) de .format()
est utilisé, Moon
dans notre exemple. Pour une répétition simple, {0}
fonctionne bien, mais cela réduit la lisibilité. Pour améliorer la lisibilité, utilisez des arguments de mot clé dans .format()
et référencez les mêmes arguments entre accolades :
mass_percentage = "1/6"
print("""You are lighter on the {moon}, because on the {moon} you would weigh about {mass} of your weight on Earth.""".format(moon="Moon", mass=mass_percentage))
Sortie : You are lighter on the Moon, because on the Moon you would weigh about 1/6 of your weight on Earth.
À propos des chaînes f
À partir de la version 3.6 de Python, vous pouvez utiliser des chaînes f. Ces chaînes ressemblent à des modèles et utilisent les noms de variables de votre code. L’utilisation de chaînes f dans l’exemple précédent donne le résultat suivant :
print(f"On the Moon, you would weigh about {mass_percentage} of your weight on Earth.")
Sortie : On the Moon, you would weigh about 1/6 of your weight on Earth.
Les variables sont placées entre accolades et la chaîne doit utiliser le préfixe f
.
Mis à part le fait que les chaînes f sont moins bavardes que toutes les autres options de mise en forme, vous pouvez utiliser des expressions entre les accolades. Ces expressions peuvent être des fonctions ou des opérations directes. Par exemple, pour représenter la valeur 1/6
en pourcentage avec une décimale, vous pouvez utiliser la fonction round()
directement :
print(round(100/6, 1))
Sortie : 16.7
Avec les chaînes f, vous n’avez pas besoin d’attribuer une valeur à une variable au préalable :
print(f"On the Moon, you would weigh about {round(100/6, 1)}% of your weight on Earth.")
Sortie : On the Moon, you would weigh about 16.7% of your weight on Earth.
L’utilisation d’une expression ne nécessite pas d’appel de fonction. Toutes les méthodes de chaîne sont également valides. Par exemple, la chaîne peut appliquer une casse spécifique pour créer un titre :
subject = "interesting facts about the moon"
heading = f"{subject.title()}"
print(heading)
Sortie : Interesting Facts About The Moon