Python Stringformatierung

PythonBeginner
Jetzt üben

Einführung

Willkommen zum Python String Formatting Lab. Die korrekte Formatierung von Strings ist eine grundlegende Aufgabe in jeder Programmiersprache und wird für alles verwendet, von einfachen print-Anweisungen bis hin zur Erstellung komplexer Berichte und Webseiten. Python bietet verschiedene Möglichkeiten zur String-Formatierung, jede mit ihren eigenen Vorteilen und Anwendungsfällen.

In diesem Lab erkunden Sie die Entwicklung der String-Formatierung in Python. Sie beginnen mit dem traditionellen %-Operator und wechseln dann zur flexibleren str.format()-Methode. Sie werden auch die f-Strings meistern, den modernen und empfohlenen Ansatz, der in Python 3.6 eingeführt wurde, und lernen, wie man Zahlen effektiv formatiert. Schließlich entdecken Sie Template-Strings, eine sichere Option für die Verarbeitung von Vorlagen aus nicht vertrauenswürdigen Quellen.

Am Ende dieses Labs werden Sie ein umfassendes Verständnis dafür haben, wie Sie die richtige String-Formatierungstechnik für Ihre Python-Projekte auswählen und anwenden.

Verwendung des %-Operators

In diesem Schritt lernen Sie die String-Formatierung im alten Stil kennen, die den %-Operator verwendet. Diese Methode, die von der C-Funktion printf übernommen wurde, nutzt Format-Spezifizierer wie %s für Strings und %d für Ganzzahlen, um Werte in einen String einzufügen.

Obwohl diese Methode funktioniert, hat sie einige Eigenheiten und ist weniger flexibel als moderne Alternativen. Für neuen Code wird dringend empfohlen, f-Strings oder str.format() zu verwenden.

Hinweis: Wenn Sie mit der Verwendung von WebIDE (ähnlich VS Code) nicht vertraut sind, lernen Sie dies zuerst in diesem Lab.

Öffnen Sie zuerst die Datei step1.py im Dateiexplorer auf der linken Seite.

Fügen Sie nun den folgenden Code zu step1.py hinzu, um zu sehen, wie ein String und eine Ganzzahl formatiert werden.

## % operator: String-Formatierung im alten Stil (nicht empfohlen für neuen Code)
name = 'Pete'
print('Hello %s' % name)  ## %s = Platzhalter für String

num = 5
print('I have %d apples' % num) ## %d = Platzhalter für Ganzzahl

Speichern Sie die Datei und führen Sie sie im Terminal aus, um die Ausgabe zu sehen.

python3 step1.py

Sie sollten die folgende Ausgabe sehen, wobei %s durch den Wert von name und %d durch den Wert von num ersetzt wurde.

Hello Pete
I have 5 apples

Verwendung von str.format

In diesem Schritt erkunden Sie die Methode str.format(), die in Python 3 eingeführt wurde (und auf 2.7 zurückportiert wurde) als eine leistungsfähigere und flexiblere Methode zur String-Formatierung. Diese Methode verwendet geschweifte Klammern {} als Platzhalter.

Sie können Argumente an format() übergeben, und diese werden in der Reihenfolge in die Platzhalter eingefügt. Sie können auch Zahlen innerhalb der Klammern verwenden, um Argumente anhand ihrer Position zu referenzieren.

Öffnen Sie die Datei step2.py im Dateiexplorer.

Fügen Sie den folgenden Code zu step2.py hinzu. Das erste Beispiel verwendet leere Klammern, und das zweite verwendet Positionsargumente.

## str.format() method: modern string formatting (Python 2.7+)
name = 'John'
age = 20

## Arguments are inserted in order
print("Hello I'm {}, my age is {}".format(name, age))

## Arguments are inserted based on position
print("Hello I'm {0}, my age is {1}".format(name, age))

Speichern Sie die Datei und führen Sie sie im Terminal aus.

python3 step2.py

Beide print-Anweisungen erzeugen dasselbe Ergebnis und demonstrieren die beiden Möglichkeiten, str.format() zu verwenden.

Hello I'm John, my age is 20
Hello I'm John, my age is 20

Formatierte String-Literale oder f-Strings

In diesem Schritt werden Sie f-Strings meistern, die empfohlene Methode zur String-Formatierung in Python 3.6 und neueren Versionen. Ein f-String ist ein String-Literal, dem f oder F vorangestellt ist. Diese Strings ermöglichen es Ihnen, Python-Ausdrücke direkt in ihnen einzubetten, eingeschlossen in geschweifte Klammern {}.

f-Strings werden zur Laufzeit ausgewertet, was sie nicht nur prägnant und lesbar, sondern auch sehr leistungsfähig macht.

Öffnen Sie die Datei step3.py im Dateiexplorer.

Grundlegende Syntax und Ausdrücke

Zuerst betrachten wir die grundlegende Syntax und wie man Ausdrücke einbettet. Fügen Sie den folgenden Code zu step3.py hinzu.

## f-string: recommended way to format strings (Python 3.6+)
name = 'Elizabeth'
print(f'Hello {name}!')  ## f prefix allows expressions in {}

## f-strings support expressions: can include calculations inside {}
a = 5
b = 10
print(f'Five plus ten is {a + b} and not {2 * (a + b)}.')

Mehrzeilige f-Strings

Sie können auch mehrzeilige Strings erstellen, indem Sie den f-String in Klammern einschließen. Fügen Sie dieses Beispiel zu step3.py hinzu.

name = 'Robert'
messages = 12
multiline_string = (
    f'Hi, {name}. '
    f'You have {messages} unread messages'
)
print(multiline_string)

Der = Spezifizierer zum Debuggen

Ab Python 3.8 können Sie den = Spezifizierer verwenden, um automatisch sowohl einen Ausdruck als auch seinen Wert auszugeben, was für das Debugging sehr nützlich ist. Fügen Sie diesen letzten Codeabschnitt zu step3.py hinzu.

## = specifier: prints both variable name and value (Python 3.8+)
from datetime import datetime
now = datetime.now().strftime("%b/%d/%Y - %H:%M:%S")
print(f'date and time: {now=}')

Speichern Sie nun die Datei und führen Sie sie im Terminal aus.

python3 step3.py

Sie werden die Ausgabe aller drei Beispiele sehen. Beachten Sie, dass das Datum und die Uhrzeit in Ihrer Ausgabe unterschiedlich sein werden.

Hello Elizabeth!
Five plus ten is 15 and not 30.
Hi, Robert. You have 12 unread messages
date and time: now='...'

Formatierung von Ziffern

In diesem Schritt lernen Sie, wie numerische Daten innerhalb von f-Strings formatiert werden. Dies ist eine leistungsstarke Funktion, um Daten in einem für Menschen lesbaren Format darzustellen. Wir behandeln das Hinzufügen von Tausendertrennzeichen, das Runden von Gleitkommazahlen und die Anzeige von Zahlen als Prozentsätze.

Öffnen Sie die Datei step4.py im Dateiexplorer.

Fügen Sie den folgenden Code zu step4.py hinzu, um verschiedene Techniken zur Zahlenformatierung zu üben.

## Adding thousands separator
a = 10000000
print(f"Number with separators: {a:,}")

## Rounding a float to 2 decimal places
b = 3.1415926
print(f"Rounded number: {b:.2f}")

## Showing a number as a percentage with 2 decimal places
c = 0.816562
print(f"As a percentage: {c:.2%}")

Jede Formatangabe folgt dem Doppelpunkt : innerhalb der geschweiften Klammern.

  • :, fügt ein Komma als Tausendertrennzeichen hinzu.
  • :.2f formatiert die Zahl als Gleitkommazahl mit zwei Dezimalstellen.
  • :.2% multipliziert die Zahl mit 100 und zeigt sie als Prozentsatz mit zwei Dezimalstellen an.

Speichern Sie die Datei und führen Sie sie im Terminal aus.

python3 step4.py

Ihre Ausgabe sollte wie folgt aussehen:

Number with separators: 10,000,000
Rounded number: 3.14
As a percentage: 81.66%

Zu Ihrer Information, hier ist eine Tabelle mit weiteren Zahlenformatierungsoptionen, die in f-Strings verfügbar sind:

Zahl Format Ausgabe Beschreibung
3.1415926 {:.2f} 3.14 Gleitkommazahl auf 2 Dezimalstellen formatieren
1000000 {:,} 1,000,000 Zahlenformat mit Kommatrennzeichen
0.35 {:.2%} 35.00% Prozentsatz formatieren
1000000000 {:.2e} 1.00e+09 Exponentielle Notation

Verwendung von Template Strings

In diesem Schritt lernen Sie die Template-Strings aus dem integrierten string-Modul von Python kennen. Obwohl sie weniger mächtig sind als f-Strings, stellen sie eine sicherere Wahl dar, wenn Sie mit String-Vorlagen (Templates) umgehen, die möglicherweise von Benutzern generiert werden. Ihre reduzierte Komplexität verhindert die Ausführung beliebigen Codes, was bei Methoden wie str.format() ein Sicherheitsrisiko darstellen kann, wenn sie nicht sorgfältig verwendet werden.

Template-Strings verwenden Dollarzeichen $ zur Kennzeichnung von Platzhaltern (z. B. $name).

Öffnen Sie die Datei step5.py im Dateiexplorer.

Fügen Sie den folgenden Code zu step5.py hinzu. Sie müssen die Template-Klasse importieren, ein Template-Objekt erstellen und dann die Methode substitute() verwenden, um Werte einzufügen.

from string import Template

name = 'Elizabeth'

## Create a Template object
t = Template('Hey $name!')

## Use the substitute() method to replace the placeholder
result = t.substitute(name=name)
print(result)

Die Methode substitute() akzeptiert Schlüsselwortargumente (Keyword Arguments), wobei die Schlüssel mit den Platzhalternamen in der Vorlage übereinstimmen.

Speichern Sie die Datei und führen Sie sie im Terminal aus.

python3 step5.py

Die Ausgabe zeigt den ersetzten String an.

Hey Elizabeth!

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss des Labors zur Python-Stringformatierung!

In diesem Labor haben Sie die primären Methoden zur Formatierung von Strings in Python kennengelernt. Sie haben gelernt:

  • Den %-Operator: Die alte C-Style-Formatierung, die für neuen Code nicht mehr empfohlen wird.
  • Die str.format()-Methode: Eine leistungsfähigere und flexiblere Methode, die {}-Platzhalter verwendet.
  • f-Strings: Der moderne, prägnante und hoch empfohlene Ansatz für Python 3.6+, der das Einbetten von Ausdrücken direkt in Strings ermöglicht.
  • Zahlenformatierung: Wie man Formatierungsangaben (Format Specifiers) innerhalb von f-Strings verwendet, um die Darstellung von Zahlen zu steuern, einschließlich Trennzeichen, Genauigkeit und Prozentsätzen.
  • Template-Strings: Ein einfacherer und sichererer Mechanismus für die String-Substitution, ideal für die Handhabung von Vorlagen aus externen oder nicht vertrauenswürdigen Quellen.

Indem Sie die Stärken und Schwächen jeder Methode verstehen, können Sie nun das am besten geeignete Werkzeug für jede Stringformatierungsaufgabe auswählen, auf die Sie auf Ihrem Weg zur Python-Programmierung stoßen werden.