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.
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.
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.
** Problem 3: Bei Verwendung desselben Werts muss mehrmals geschrieben werden ** Im obigen Beispiel wird dieselbe Variable namens "Name" zweimal verwendet, es ist jedoch erforderlich, sie zweimal in den Taple auf der rechten Seite zu schreiben.
** Problem 4: Die Verwendung eines Wörterbuchs macht es überflüssig **
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.
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.
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 zum Einbetten eines Strings in Python
str.format ()
nur mit Python2.6
verwendet werden kann und die f-Zeichenfolge Python3.6
oder höher sein muss.Recommended Posts