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 '#'