Robuste Umwandlungstechniken
Neben den grundlegenden Fehlbehandlungstechniken, die im vorherigen Abschnitt behandelt wurden, gibt es mehrere fortgeschrittenere Techniken, die Sie verwenden können, um eine robuste Umwandlung von Zeichenketten in Ganzzahlen in Ihrem Python-Code sicherzustellen.
Verwendung der int()
-Funktion mit Standardwerten
Eine Möglichkeit, Umwandlungsfehler von Zeichenketten in Ganzzahlen zu behandeln, besteht darin, einen Standardwert bereitzustellen, der verwendet wird, wenn die Umwandlung fehlschlägt. Dies können Sie tun, indem Sie die int()
-Funktion mit einem optionalen dritten Argument verwenden, das den Standardwert angibt, der zurückgegeben werden soll, wenn die Umwandlung fehlschlägt.
int_value = int("42", default=0)
print(f"Converted value: {int_value}") ## Output: Converted value: 42
int_value = int("not_a_number", default=0)
print(f"Converted value: {int_value}") ## Output: Converted value: 0
Verwendung der tryint()
-Funktion
Eine andere Technik besteht darin, eine benutzerdefinierte Funktion zu erstellen, die versucht, eine Zeichenkette in eine Ganzzahl umzuwandeln und einen Standardwert zurückgibt, wenn die Umwandlung fehlschlägt. Dies kann nützlich sein, wenn Sie die Umwandlung von Zeichenketten in Ganzzahlen an mehreren Stellen in Ihrem Code durchführen müssen.
def tryint(value, default=0):
try:
return int(value)
except (ValueError, OverflowError):
return default
int_value = tryint("42")
print(f"Converted value: {int_value}") ## Output: Converted value: 42
int_value = tryint("not_a_number", default=-1)
print(f"Converted value: {int_value}") ## Output: Converted value: -1
Verwendung der ast.literal_eval()
-Funktion
Die ast.literal_eval()
-Funktion aus der Python-Standardbibliothek kann verwendet werden, um eine Zeichenkette sicher als Python-Literal auszuwerten. Dies kann nützlich sein, um Zeichenketten in Ganzzahlen sowie in andere Datentypen umzuwandeln.
import ast
int_value = ast.literal_eval("42")
print(f"Converted value: {int_value}") ## Output: Converted value: 42
int_value = ast.literal_eval("not_a_number")
print(f"Converted value: {int_value}") ## Raises ValueError: malformed node or string
Durch die Verwendung dieser robusten Umwandlungstechniken können Sie Python-Code schreiben, der eine Vielzahl von Eingabeszenarien verarbeiten kann und ein konsistentes und zuverlässiges Benutzererlebnis bietet.