« Python : fstrings » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
(Page créée avec « =Le formatage de string, méthode Python3= https://realpython.com/python-f-strings/ On peut désormais se débarrasser des anciennes syntaxes : <nowiki> print("{}".form... »)
 
Aucun résumé des modifications
Ligne 7 : Ligne 7 :
print("{}".format(var))
print("{}".format(var))
print("%s"%var)
print("%s"%var)
</nowiki>
On peut appeller des fonctions :
<nowiki>
>>> def texter():
...    return "This is a sample text"
...
>>> print(f"{texter()}")
This is a sample text
</nowiki>
... ainsi que des expressions logiques :
<nowiki>
>>> def texter():
...    return "This is a sample text"
...
>>> print(f"{texter()}")
This is a sample text
</nowiki>
...voire séparer un print sur plusieurs lignes (ne pas oublier le f devant chaque expression):
<nowiki>
>>> print(f"First "
... f"Second "
... f"Third")
First Second Third
</nowiki>
...ou même écrire sur plusieurs lignes:
<nowiki>
>>> print(f"""
... Les sanglots longs
... Des violons
... De l'automne"""
...
... )
Les sanglots longs
Des violons
De l'automne
</nowiki>
==Quelques détails==
===Quotes===
Tous les types de quotes fonctionnent de façon normale :
<nowiki>
>>> print(f"hello")
hello
>>> print(f'Hi')
Hi
>>> print(f'''Ahoy''')
Ahoy
</nowiki>
===Dictionnaires===
Attention avec les dictionnaires : il vaut mieux garder l'habitude d'écrire les dictionnaires en simples quotes, les strings en double :
<nowiki>
>>> comedian = {'name': 'Eric Idle', 'age': 74}
>>> f"The comedian is {comedian['name']}, aged {comedian['age']}."
The comedian is Eric Idle, aged 74.
</nowiki>
Cela fonctionne.
Cependant :
<nowiki>
>>> 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
</nowiki>
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 :
<nowiki>
>>> f"{{74}}"
'{74}'
>>> f"{{{74}}}"
'{74}'
>>> f"{{{{74}}}}"
'{{74}}'
</nowiki>
===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 :
<nowiki>
>>> f"{\"Eric Idle\"}"
  File "<stdin>", line 1
    f"{\"Eric Idle\"}"
                      ^
SyntaxError: f-string expression part cannot include a backslash
</nowiki>
De la même façon, attention aux commentaires dans les expressions :
<nowiki>
>>> 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 '#'
</nowiki>
</nowiki>

Version du 4 août 2019 à 15:55

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