[Python] Die f-Zeichenfolge sollte zum Einbetten der Zeichenfolge verwendet werden

Quelle

Dieser Artikel wurde zusammengestellt, indem Punkt 4 gelesen wurde: "** Einbetten in eine f-Zeichenfolge ohne Verwendung der Zeichenfolge im C-Format und des str.formats " in " Effective Python 2nd Edition **". Ding.

Einbettung von Python-Strings

Es gibt drei Hauptmethoden zum Einbetten von Zeichenfolgen in Python.

--Wie benutzt man%

Ich habe es ohne viel Bewusstsein benutzt, aber ich möchte diese Gelegenheit nutzen, um darüber nachzudenken, welches angemessen ist.

Wie benutzt man%

Dies ist eine Methode, die denjenigen vertraut ist, die Java- oder C-Sprache verwenden. Schreiben Sie wie folgt.

name = 'Käse Rindfleisch Schüssel Taro'
age = 21 
print('mein Name ist%s.%Ich bin d Jahre alt.' % (name, age))

Ausgabe

Mein Name ist Cheese Beef Bowl Taro. Ich bin 21 Jahre alt.

Jep. Sieht gut aus. Tatsächlich gibt es jedoch einige Probleme mit dieser Methode. Schauen wir uns das folgende Beispiel an.

name = 'Käse Rindfleisch Schüssel Taro'
age = 21 
weight = 55.1525 
 
print('mein Name ist%s.%Ich bin d Jahre alt. Gewicht ist ungefähr%Es ist dkg. Von jetzt an%Freut mich, dich kennenzulernen.' % (name, age, int(weight), name))

Ausgabe

Mein Name ist Cheese Beef Bowl Taro. Ich bin 21 Jahre alt. Es wiegt ca. 55 kg. Vielen Dank für Ihre fortgesetzte Unterstützung von Cheese Beef Bowl Taro.

Der obige Code weist die folgenden vier Probleme auf.

Wenn Sie beispielsweise den Vornamen und das Alter im obigen Code umkehren, wird der folgende Fehler angezeigt

Traceback (most recent call last):
  File "cheese.py", line 8, in <module>
    print('mein Name ist%s.%Ich bin d Jahre alt. Gewicht ist ungefähr%Es ist dkg. Von jetzt an%Freut mich, dich kennenzulernen.' % (age, name, int(weight), name))
TypeError: %d format: a number is required, not str

Der erste Typ ist eine Ganzzahl und der zweite ein Zeichenkettentyp. Daher ist es nutzlos, wenn Sie ihn umkehren. Sie müssen immer vorsichtig mit Art und Reihenfolge sein.

Im obigen Fall wird "Gewicht" in eine ganze Zahl umgewandelt, aber je komplizierter die zuzuweisende Formel ist, desto weniger lesbar wird sie. "Welche Variable entspricht welcher?" Sie müssen genau hinschauen.

Die Probleme 1 und 3 können mithilfe eines Wörterbuchs anstelle eines Taples gelöst werden. Sie können wie folgt schreiben.

name = 'Käse Rindfleisch Schüssel Taro'
age = 21 
weight = 55.1525 
 
print('mein Name ist%(name)s.%(age)Ich bin d Jahre alt. Gewicht ist ungefähr%(weight)Es ist dkg. Von jetzt an%(name)Freut mich, dich kennenzulernen.' % {'age':age, 'name':name, 'weight':int(weight)})

Die Ausgabe ist die gleiche. Wenn Sie es so schreiben, müssen Sie nur den Name schreiben, der zweimal erscheint, und Sie müssen sich nicht um die Reihenfolge der Variablen kümmern. Die Verwendung des Wörterbuchs machte es jedoch noch redundanter und unübersichtlicher.

Verwendung des integrierten Formats oder des str.formats

Als nächstes wollen wir sehen, wie man "str.format ()" verwendet.

name = 'Käse Rindfleisch Schüssel Taro'
age = 21 
print('mein Name ist{}ist.{}歳ist.'.format(name, age))

Schreiben Sie so. Sie können die Reihenfolge der Variablen auch ändern, indem Sie den Index wie unten gezeigt einstellen.

print('mein Name ist{1}ist.{0}歳ist.'.format(age, name))

Auf das vorherige Beispiel anwenden.

name = 'Käse Rindfleisch Schüssel Taro'
age = 21 
weight = 55.1525 
 
print('mein Name ist{0}ist.{1}歳ist.体重はだいたい{2}kgist.これからも{0}Freut mich, dich kennenzulernen.'.format(age, name, int(weight)))

Es scheint, dass die obigen Probleme 1 und 3 mithilfe des Index gelöst werden können. Obwohl es sauberer ist als die Methode, die ein Wörterbuch mit% verwendet, ist es dennoch redundant.

Verwendung von f string

Betrachten Sie abschließend die Methode mit der Zeichenfolge f. Schreiben Sie so.

name = 'Käse Rindfleisch Schüssel Taro'
age = 21 
weight = 55.1525 
 
print(f'mein Name ist{name}ist.{age}歳ist.')

Auf das vorherige Beispiel anwenden

name = 'Käse Rindfleisch Schüssel Taro'
age = 21 
weight = 55.1525 

print(f'mein Name ist{name}ist.{age}歳ist.体重はだいたい{int(weight)}kgist.これからも{name}Freut mich, dich kennenzulernen.')

Sie können sehen, dass es viel sauberer ist als die Methode mit % und str.format (). Es ist gut lesbar, da es direkt eingebettet ist, anstatt die Variable auf der rechten Seite mit einem Taple, einem Wörterbuch oder einem Format () anzugeben. Es spielt keine Rolle, welchen Code Sie verwenden, aber je komplexer er ist, desto besser ist es, die Zeichenfolge f zu verwenden.

Zusammenfassung

--Zusammenfassung zum Einbetten eines Strings in Python

Recommended Posts

[Python] Die f-Zeichenfolge sollte zum Einbetten der Zeichenfolge verwendet werden
33 Zeichenfolgen, die in Python nicht als Variablennamen verwendet werden sollten
++ und-können nicht zum Inkrementieren / Dekrementieren in Python verwendet werden
[Python] Was verwendet werden sollte, return oder return None
Ich habe eine generische Python-Projektvorlage erstellt
Python-String wird standardmäßig zu f-String (vielleicht)
Zusammenfassung häufig verwendeter Python-Arrays (für mich)
Astro: Häufig verwendete Python-Module / -Funktionen zur Analyse
2016-10-30 sonst für Python3> für:
Python [für mich]
[Python] Erstellen einer Umgebung für die Wettbewerbsprogrammierung mit Atom (input () kann verwendet werden!) [Mac]
Von Boto3 verwendete Anmeldeinformationen (AWS SDK für Python)
Python Hinweis: Wenn der Befehl pip nicht verwendet werden kann
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
[Memorandum] Japanische Schlüssel können nicht in Pythons string.Template.substitute verwendet werden
Listenverständnis, da operator.methodcaller nicht mit Python 2.5 verwendet werden kann
Operatoren ++, - können nicht in Python verwendet werden (Unterschied zu PHP)
Kann bei Wettkampfprofis eingesetzt werden! Python-Standardbibliothek
Python3> Slice-Kopie / Slice-Notation> wird für Anweisungen usw. verwendet.
[Redash] Die Standardbibliothek kann nicht in der Python-Funktion verwendet werden
Kann mit AtCoder verwendet werden! Eine Sammlung von Techniken zum Zeichnen von Kurzcode in Python!