In diesem Tutorial lernen wir den String-Formatierungsmechanismus kennen. Der F-String ist die beste Möglichkeit, den String zu formatieren. Der Formatierungsstil der Zeichenfolge macht die Zeichenfolge lesbarer, prägnanter und weniger fehleranfällig. Es ist auch schneller als das andere.
Bevor wir tiefer in dieses Thema eintauchen, besprechen wir zunächst die Techniken, die vor der f-Saite verwendet wurden.
Alte String-Formatierung in Python
Es gibt zwei Hauptmethoden zum Formatieren der Zeichenfolge: % - Formatierung und str.format(). Aber beide Methoden haben einige Einschränkungen. Lassen Sie uns eine kurze Einführung in diese gegebenen Methoden geben.
1.% - Formatierung
Es handelt sich um eine herkömmliche Methode zum Formatieren der Zeichenfolge, die Dokumentation empfiehlt jedoch diese Methode, die die folgende Anweisung enthält.
„Die hier beschriebenen Formatierungsvorgänge weisen eine Reihe von Macken auf, die zu mehreren häufigen Fehlern führen (z. B. dass Tupel und Wörterbücher nicht korrekt angezeigt werden).
Verwenden der neueren formatierten Zeichenfolgenliterale oder der str.format() Schnittstelle hilft, diese Fehler zu vermeiden.' - Offizielle Dokumentation .
So verwenden Sie % - Formatierung
Mit dem %-Operator können wir eine integrierte Operation ausführen. Lassen Sie uns das folgende Beispiel verstehen.
Baumdurchquerung
student = 'Michel' 'Hello, %s.' % student
Ausgabe:
Hello Michel
Wir können das Tupel auch zum Speichern mehrerer Variablen verwenden. Sehen wir uns das folgende Beispiel an.
name = 'Sharma' age = 24 'Hello, %s. You are %s.' % (name, age)
Ausgabe:
Hello Sharma You are 24.
Warum %-Formatierung nicht empfohlen wird
Denn mit zunehmender Variable und längerer Zeichenfolge wird unser Code viel weniger leicht lesbar. Der Code sieht chaotisch aus. Sehen wir uns das folgende Beispiel an.
Beispiel -
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)')
Ausgabe:
Hello, Steve Rogers. Your age is 70. You are a Superhero. You were a member of Marvel.
Wie wir im obigen Code sehen können, wurde der Code schwerer zu lesen und anfälliger für Fehler. Aus diesem Grund ist diese Art der Formatierung von Zeichenfolgen nicht gut.
2.str.format()-Methode
Dies ist eine weitere beliebte Methode zum Formatieren der in Python 2.6 eingeführten Zeichenfolge. Mal sehen, wie wir es nutzen können.
So verwenden Sie str.format()
Es ist eine Verbesserung gegenüber der %-Formatierung. Es ist wie eine normale integrierte Funktion, die für das Objekt aufgerufen und dieses Objekt in eine Zeichenfolge konvertiert wird.
Sehen wir uns das folgende Beispiel an.
Beispiel -
first_name = 'Mathew' last_name = 'Zukerburg' age = 45 print('Hello, {}. You are {}.'.format(name, age)')
Um auf das Wörterbuchelement innerhalb der Format-Methode zuzugreifen, können wir den Schlüssel in der Format()-Methode übergeben.
person = {'name': 'Peter', 'age': 17} 'Hello, {name}. You are {age}.'.format(name=person['name'], age=person['age'])
Ausgabe:
Hello Peter, You are 17
Warum wird die Methode str.format() nicht empfohlen?
Das str.format() ist viel effizienter als die %-format-Methode, kann aber immer noch recht ausführlich sein, wenn wir mit mehreren Parametern arbeiten.
F-Saiten-Methode
Es handelt sich um einen neuen String-Formatierungsmechanismus, der mit PEP 498 eingeführt wurde. Er wird auch als Literal String Interpolation oder häufiger als F-Strings bezeichnet (f-Zeichen vor dem String-Literal). Der Hauptzweck dieses Mechanismus besteht darin, die Interpolation zu vereinfachen.
Wenn wir der Zeichenfolge den Buchstaben „F“ voranstellen, wird die Zeichenfolge selbst zur F-Zeichenfolge. Der F-String kann ähnlich wie der formatiert werden str.format() Methode. Der F-String bietet eine praktische Möglichkeit, Python-Ausdrücke zur Formatierung in String-Literale einzubetten.
Beispiel -
Benutzer MySQL anzeigen
# 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.')
Ausgabe:
Hello, My name is Tushar and I'm 28 years old.
Im obigen Code haben wir den f-String zum Formatieren des Strings verwendet. Es wertet zur Laufzeit aus; wir können alle gültigen Python-Ausdrücke darin einfügen.
Wir können es in einer einzigen Anweisung verwenden.
print(f'{2 * 30})'
Ausgabe:
60
Allerdings könnten wir es in der Funktion nutzen.
def upercase(input): return input.uper() name = 'Sachin Tendulkar' f'{upercase(name)} is great.'
Ausgabe:
Sachin Tendulkar is great
Der f-String könnte auch mit dem Klassenobjekt verwendet werden. Lassen Sie uns das folgende Beispiel verstehen.
Beispiel -
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}')
Ausgabe:
Keenu Reevs's superhit movie is Matrix.
Erläuterung -
Im obigen Code haben wir __str__() und __repr__() verwendet, die ein Objekt als String darstellen. Daher müssen wir mindestens eine dieser Methoden in die Klassendefinition aufnehmen. Der F-String verwendet die Methode __str__(); Wir können auch __repr__() verwenden, indem wir das Konvertierungsflag einschließen! R.
print(f'{ac}') print(f'{ac}'!r)
Ausgabe:
Keenu Reevs's superhit movie is Matrix. Keenu Reevs Matrix Superhit
F-String im Wörterbuch
Wir müssen vorsichtig sein, wenn wir mit Wörterbuchschlüsseln innerhalb des F-Strings arbeiten. Es gibt ein anderes Zitat für die Verwendung von Wörterbuchtasten und F-String. Lassen Sie uns das folgende Beispiel verstehen.
Beispiel -
detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.')
Ausgabe:
John is 19 years old.
Die folgende Methode ist im Falle eines Wörterbuchs nicht zulässig.
Beispiel -
detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.')
Ausgabe:
File '', line 2 print(f'{detail['name']} is {detail['age']} years old.') ^ SyntaxError: invalid syntax
Wie wir im obigen Code sehen können, ändern wir ein doppeltes Anführungszeichen in ein einfaches Anführungszeichen und es wird ein Fehler ausgegeben.
Geschwindigkeit
Der Grund für die Anpassung dieses Formatierungsstils ist seine Geschwindigkeit. Der F-String wird zur Laufzeit ausgewertet und nicht zu konstanten Werten. Es bettet Ausdrücke in String-Literale ein und verwendet dabei minimale Syntax. Es ist schnell, da es zur Laufzeit ausgewertet wird und keinen konstanten Wert.
Sehen wir uns den folgenden String-Vergleich an.
Beispiel 1:
import timeit print(timeit.timeit('''name = 'Sachin' age = 74 '%s is %s.' % (name, age)''', number = 10000))
Ausgabe:
0.0022497819736599922
Beispiel – 2:
import timeit print(timeit.timeit('''name = 'Mathew' age = 40 '{} is {}.'.format(name, age)''', number = 10000))
Ausgabe:
0.0025783719611354172
Beispiel – 3:
import timeit print(timeit.timeit('''name = 'Rockey' age = 74 f'{name} is {age}.'''', number = 10000))
Ausgabe:
Scanner Java importieren
0.0019360429723747075
Wie wir beobachten können, steht der F-String ganz oben auf der Liste.
Zahnspange
Um geschweifte Klammern im Code erscheinen zu lassen, sollten Sie die doppelten Anführungszeichen wie folgt verwenden. Lassen Sie uns das folgende Beispiel verstehen.
Beispiel -
f'{{70 + 40}}'
Ausgabe:
{70 + 40}
Wenn wir die dreifachen geschweiften Klammern verwenden, werden in unserer Zeichenfolge einzelne geschweifte Klammern angezeigt. Lassen Sie uns das folgende Beispiel verstehen.
Beispiel -
f'{{{90 + 4}}}'
Ausgabe:
{94}
Wir können die meisten geschweiften Klammern anzeigen, wenn wir mehr als dreifache Klammern verwenden.
Beispiel -
f'{{{{70 + 4}}}}'
Ausgabe:
10 ml zu Unzen
{{70 + 4}}
Backslashes
Wir können die Backslash-Escapezeichen im String-Teil eines F-Strings verwenden. Allerdings können wir im Ausdrucksteil eines F-Strings keine Backslashes als Escapezeichen verwenden. Lassen Sie uns das folgende Beispiel verstehen.
Beispiel -
f'{'Medric Pacalo'}' File '', line 1 f'{'Medric Pacalo'}'
Ausgabe:
SyntaxError: f-string expression part cannot include a backslash
Inline-Kommentare
Wir können das #-Symbol nicht in den Ausdruck einfügen. Es wird ein Syntaxfehler ausgegeben. Lassen Sie uns das folgende Beispiel verstehen.
Beispiel -
f'Tony is {10 * 73 #Hate this!}.' f'Tonyr is {2 * 37 #Hate this!}.'
Ausgabe:
SyntaxError: f-string expression part cannot include '#'
Abschluss
Wir können jede der drei Methoden verwenden, aber die F-String-Methode bietet eine präzisere, lesbarere und bequemere Möglichkeit. Es ist schneller und weniger fehleranfällig. Wir haben fast jedes mögliche Off-String-Szenario erklärt und erklärt, warum man diesen Ansatz bei der Programmierung berücksichtigen sollte.