impressionnants F-strings de Python
Apprenez à maîtriser toute la puissance des f-string Python
L'incroyable puissance des f-strings Python
Les littéraux de chaîne formatés - également appelés f-strings - existent depuis Python 3.6, donc je suis sûr que vous en avez déjà entendu parler, mais vous n'êtes peut-être pas conscient de toute l'étendue de leurs pouvoirs.
Mise en forme du texte et des nombres
Les chaînes F prennent en charge le mini-langage de spécification de format de Python, vous pouvez donc intégrer de nombreuses opérations de formatage dans leurs modificateurs. Il nous permet d'aligner ou de centrer le texte, d'ajouter des zéros/espaces non significatifs, de définir des séparateurs de milliers et bien plus encore. Voici quelques exemples:
pi = 3.1415926
print(f'Pi is approximately equal to {pi:.2f}')
$ Pi is approximately equal to 3.14
id = 1
print(f"The id is {id:03d}")
$ The id is 001
N = 1000000000
print(f'His net worth is ${N:,d}')
$ His net worth is $1,000,000,000
text = "hello world"
# Center text:
print(f"{text:^15}")
$ ' hello world '
number = 1234567890
# Set separator
print(f"{number:,}")
$ 1,234,567,890
number = 123
# Add leading zeros
print(f"{number:08}")
$ 00000123
Chaînes F imbriquées
Si les chaînes f de base ne sont pas assez bonnes pour vos besoins de formatage, vous pouvez même les imbriquer les unes dans les autres, vous permettant par exemple de formater le flottant et d'aligner la chaîne à droite :
number = 254.3463
print(f"{f'${number:.3f}':>10s}")
$ ' $254.346'
Formatage de la date et de l'heure
L'application de la mise en forme des nombres avec des chaînes f est assez courante, mais saviez-vous que vous pouvez également formater les dates et les chaînes d'horodatage ?
Les f-strings peuvent formater la date et l'heure comme si vous utilisiez la méthode datetime.strftime. C'est très agréable, quand on se rend compte qu'il y a plus de formats que les quelques-uns mentionnés dans les docs. Le strftime de Python prend également en charge tous les formats pris en charge par l'implémentation C sous-jacente, qui peuvent varier selon la plate-forme et c'est pourquoi il n'est pas mentionné dans les docs. Cela dit, vous pouvez quand même profiter de ces formats et utiliser par exemple %F, qui est un équivalent de %Y-%m-%d ou %T qui est un équivalent de %H:%M:%S, vaut également mentionnant sont %x et %X qui sont respectivement les formats de date et d'heure préférés des paramètres régionaux. L'utilisation de ces formats n'est évidemment pas limitée aux f-strings. Reportez-vous aux pages de manuel Linux pour la liste complète des formats.
from datetime import datetime
today = datetime.today()
print(f"{today:%Y-%m-%d}")
$ 2022-03-11
print(f"{today:%Y}")
$ 2022
print(f"Today is {today}")
$ Today is 2021-07-31 18:20:48.956829
print(f"Today is {today:%B %d, %Y}")
$ Today is July 31, 2021
print(f"Today is {today:%m-%d-%Y}")
$ Today is 07-31-2021
S'échapper correctement
Il y a bien sûr quelques situations qui nécessiteront une attention particulière lors de la manipulation de quelques caractères. Voici quelques exemples:
name = "Paul"
print(f'My name is \'{name}\'.')
$ My name is 'Paul'.
print(f'My name is {{name}}.')
$ My name is {name}.
print(f'My name is {{{name}}}.')
$ My name is {Paul}.
print(f'My name is \\{name}\\.')
$ My name is \Paul\.
Conclusion
En plus d'être plus faciles à lire que le formatage traditionnel de style C tel que %, ou la méthode format(), les f-strings sont également optimisés et beaucoup plus rapides à traiter... c'est donc définitivement une solution gagnante.