Python : fstrings
Le formatage de string, méthode Python3
https://realpython.com/python-f-strings/
On peut désormais se débarrasser des anciennes syntaxes :
print("{}".format(var)) print("%s"%var)
On peut appeller des fonctions :
>>> def texter(): ... return "This is a sample text" ... >>> print(f"{texter()}") This is a sample text
... ainsi que des expressions logiques :
>>> def texter(): ... return "This is a sample text" ... >>> print(f"{texter()}") This is a sample text
...voire séparer un print sur plusieurs lignes (ne pas oublier le f devant chaque expression):
>>> print(f"First " ... f"Second " ... f"Third") First Second Third
...ou même écrire sur plusieurs lignes:
>>> print(f""" ... Les sanglots longs ... Des violons ... De l'automne""" ... ... ) Les sanglots longs Des violons De l'automne
Quelques détails
Quotes
Tous les types de quotes fonctionnent de façon normale :
>>> print(f"hello") hello >>> print(f'Hi') Hi >>> print(f'''Ahoy''') Ahoy
Dictionnaires
Attention avec les dictionnaires : il vaut mieux garder l'habitude d'écrire les dictionnaires en simples quotes, les strings en double :
>>> comedian = {'name': 'Eric Idle', 'age': 74} >>> f"The comedian is {comedian['name']}, aged {comedian['age']}." The comedian is Eric Idle, aged 74.
Cela fonctionne.
Cependant :
>>> comedian = {'name': 'Eric Idle', 'age': 74} >>> f'The comedian is {comedian['name']}, aged {comedian['age']}.' File "<stdin>", line 1 f'The comedian is {comedian['name']}, aged {comedian['age']}.' ^ SyntaxError: invalid syntax
Renvoie une erreur. Les simples quotes du dictionnaire viennent refermer celles de la chaîne de caractères.
Accolades
Pour faire apparaître une accolade, il faut la doubler :
>>> f"{{74}}" '{74}' >>> f"{{{74}}}" '{74}' >>> f"{{{{74}}}}" '{{74}}'
Backslash & commentaires
On peut utiliser des backslashs pour échapper une partie de la chaîne, mais on ne peut les utiliser dans l'expression logique en elle-même :
>>> f"{\"Eric Idle\"}" File "<stdin>", line 1 f"{\"Eric Idle\"}" ^ SyntaxError: f-string expression part cannot include a backslash
De la même façon, attention aux commentaires dans les expressions :
>>> f"Eric is {2 * 37 #Oh my!}." File "<stdin>", line 1 f"Eric is {2 * 37 #Oh my!}." ^ SyntaxError: f-string expression part cannot include '#'