Dans ce didacticiel, nous découvrirons le mécanisme de formatage des chaînes. La f-string est le meilleur moyen de formater la chaîne. Le style de formatage de la chaîne la rend plus lisible, plus concise et moins sujette aux erreurs. Il est également plus rapide que l'autre.
Avant d’approfondir ce sujet, nous discuterons d’abord des techniques utilisées avant la corde fa.
Ancien formatage de chaîne en Python
Il existe deux manières principales de formater la chaîne : % - formatage et str.format(). Mais les deux méthodes présentent certaines limites. Faisons une brève introduction de ces méthodes données.
1.% - formatage
Il s'agit d'une manière traditionnelle de formater la chaîne, mais la documentation recommande cette méthode, qui contient l'instruction suivante.
« Les opérations de formatage décrites ici présentent diverses bizarreries qui conduisent à plusieurs erreurs courantes (telles que l'échec de l'affichage correct des tuples et des dictionnaires).
En utilisant les littéraux de chaîne formatés les plus récents ou le str.format() L'interface permet d'éviter ces erreurs. - Documentation officielle .
Comment utiliser le formatage %
Nous pouvons effectuer une opération intégrée en utilisant l'opérateur %. Comprenons l'exemple suivant.
modèle de conception Java
student = 'Michel' 'Hello, %s.' % student
Sortir:
Hello Michel
Nous pouvons également utiliser le tuple pour stocker les multiples variables. Voyons l'exemple suivant.
name = 'Sharma' age = 24 'Hello, %s. You are %s.' % (name, age)
Sortir:
Hello Sharma You are 24.
Pourquoi le formatage % n'est pas recommandé
Car à mesure que la variable augmente et que la chaîne s'allonge, notre code devient beaucoup moins facilement lisible. Le code semble compliqué. Voyons l'exemple suivant.
Exemple -
first_name = 'Steve' last_name = 'Rogers' age = 70 profession = 'Superhero' group = 'Marvel? print(''Hello, %s %s. Your age is %s. You are a %s. You were a member of %s.' %(first_name, last_name, age, profession)')
Sortir:
Hello, Steve Rogers. Your age is 70. You are a Superhero. You were a member of Marvel.
Comme nous pouvons le voir dans le code ci-dessus, le code est devenu difficile à lire et plus sujet aux erreurs. C'est pourquoi cette façon de formater une chaîne n'est pas bonne.
Méthode 2.str.format()
Il s'agit d'une autre manière populaire de formater la chaîne introduite dans Python 2.6. Voyons comment nous pouvons l'utiliser.
Comment utiliser str.format()
Il s'agit d'une amélioration par rapport au formatage %. C'est comme une fonction intégrée normale appelée sur l'objet et cet objet étant converti en chaîne.
Voyons l'exemple suivant.
Exemple -
first_name = 'Mathew' last_name = 'Zukerburg' age = 45 print('Hello, {}. You are {}.'.format(name, age)')
Pour accéder à l’élément dictionnaire dans la méthode format, nous pouvons passer la clé dans la méthode format().
person = {'name': 'Peter', 'age': 17} 'Hello, {name}. You are {age}.'.format(name=person['name'], age=person['age'])
Sortir:
Hello Peter, You are 17
Pourquoi la méthode str.format() n'est pas recommandée ?
La méthode str.format() est beaucoup plus efficace que la méthode %-format mais elle peut encore être assez verbeuse lorsque nous traitons de plusieurs paramètres.
Méthode de chaîne F
Il s'agit d'un nouveau mécanisme de formatage de chaîne introduit par le PEP 498. Il est également connu sous le nom d'interpolation de chaîne littérale ou plus communément sous le nom de chaînes F. (caractère f précédant la chaîne littérale). L'objectif principal de ce mécanisme est de faciliter l'interpolation.
outil de guérison
Lorsque nous préfixons la chaîne avec la lettre « F », la chaîne devient la chaîne f elle-même. La chaîne f peut être formatée de la même manière que la str.format() méthode. La chaîne F offre un moyen pratique d'intégrer une expression Python dans des chaînes littérales pour le formatage.
Exemple -
# Python3 program introducing f-string val = 'Geeks' print(f'{val}for{val} is a portal for {val}.') name = 'Tushar' age = 23 print(f'Hello, My name is {name} and I'm {age} years old.')
Sortir:
Hello, My name is Tushar and I'm 28 years old.
Dans le code ci-dessus, nous avons utilisé la f-string pour formater la chaîne. Il évalue au moment de l'exécution ; nous pouvons y mettre toutes les expressions Python valides.
Nous pouvons l'utiliser dans une seule instruction.
print(f'{2 * 30})'
Sortir:
60
Cependant, nous pourrions utiliser in function.
def upercase(input): return input.uper() name = 'Sachin Tendulkar' f'{upercase(name)} is great.'
Sortir:
Sachin Tendulkar is great
La f-string pourrait également être utilisée avec l'objet de classe. Comprenons l'exemple suivant.
Exemple -
class Actor: def __init__(self, first_name, last_name, movie): self.first_name = first_name self.last_name = last_name self.movie = movie def __str__(self): return f'{self.first_name} {self.last_name}'s superhit movie is {self.movie}.' def __repr__(self): return f'{self.first_name} {self.last_name} {self.movie}. Superhi!' ac = Actor('Keenu', 'Reevs', 'Matrix') print(f'{ac}')
Sortir:
Keenu Reevs's superhit movie is Matrix.
Explication -
Dans le code ci-dessus, nous avons utilisé __str__() et __repr__(), représentant un objet sous forme de chaîne. Nous devons donc inclure au moins une de ces méthodes dans la définition de classe. La f-string utilisera la méthode __str__() ; nous pouvons également utiliser le __repr__() en incluant l'indicateur de conversion ! r.
print(f'{ac}') print(f'{ac}'!r)
Sortir:
Keenu Reevs's superhit movie is Matrix. Keenu Reevs Matrix Superhit
F-string dans le dictionnaire
Nous devons faire attention lorsque nous travaillons avec des clés de dictionnaire à l'intérieur de la f-string. Il existe une citation différente pour utiliser les clés du dictionnaire et la f-string. Comprenons l'exemple suivant.
Exemple -
detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.')
Sortir:
John is 19 years old.
La méthode ci-dessous n'est pas autorisée en cas de dictionnaire.
Exemple -
detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.')
Sortir:
File '', line 2 print(f'{detail['name']} is {detail['age']} years old.') ^ SyntaxError: invalid syntax
Comme nous pouvons le voir dans le code ci-dessus, nous changeons un guillemet double en guillemets simples, et cela a généré une erreur.
Vitesse
La raison pour laquelle ce style de formatage est adapté est sa rapidité. La f-string évalue au moment de l'exécution plutôt que des valeurs constantes. Il intègre l'expression dans des chaînes littérales, en utilisant une syntaxe minimale. C'est rapide car il évalue au moment de l'exécution, pas une valeur constante.
Voyons la comparaison de chaînes suivante.
Exemple 1:
import timeit print(timeit.timeit('''name = 'Sachin' age = 74 '%s is %s.' % (name, age)''', number = 10000))
Sortir:
0.0022497819736599922
Exemple - 2 :
import timeit print(timeit.timeit('''name = 'Mathew' age = 40 '{} is {}.'.format(name, age)''', number = 10000))
Sortir:
0.0025783719611354172
Exemple - 3 :
import timeit print(timeit.timeit('''name = 'Rockey' age = 74 f'{name} is {age}.'''', number = 10000))
Sortir:
caractère de chaîne Java
0.0019360429723747075
Comme nous pouvons le constater, la f-string est en haut de la liste.
Croisillons
Pour faire apparaître des accolades dans le code, vous devez utiliser les guillemets doubles comme suit. Comprenons l'exemple suivant.
Exemple -
texte d'habillage CSS
f'{{70 + 40}}'
Sortir:
{70 + 40}
Si nous utilisons les triples accolades, des accolades simples seront affichées dans notre chaîne. Comprenons l'exemple suivant.
Exemple -
f'{{{90 + 4}}}'
Sortir:
{94}
Nous pouvons afficher davantage d'accolades si nous utilisons plus de triples accolades.
Exemple -
f'{{{{70 + 4}}}}'
Sortir:
{{70 + 4}}
Barres obliques inverses
Nous pouvons utiliser les échappements de barre oblique inverse dans la partie chaîne d'une f-string. Cependant, nous ne pouvons pas utiliser de barres obliques inverses pour nous échapper dans la partie expression d'une chaîne f. Comprenons l'exemple suivant.
Exemple -
f'{'Medric Pacalo'}' File '', line 1 f'{'Medric Pacalo'}'
Sortir:
SyntaxError: f-string expression part cannot include a backslash
Commentaires en ligne
Nous ne pouvons pas inclure le symbole # dans l'expression. Cela générera une erreur de syntaxe. Comprenons l'exemple suivant.
Exemple -
f'Tony is {10 * 73 #Hate this!}.' f'Tonyr is {2 * 37 #Hate this!}.'
Sortir:
SyntaxError: f-string expression part cannot include '#'
Conclusion
Nous pouvons utiliser n’importe quelle méthode sur trois, mais la méthode f-string offre une manière plus concise, lisible et pratique. C’est plus rapide et moins sujet aux erreurs. Nous avons expliqué presque tous les scénarios possibles hors chaîne et pourquoi il faut considérer cette approche dans la programmation.