Python: Strings in Zahlen umwandeln – Erklärung mit Fehlerbehandlung und Beispielen

1. Einführung

Beim Programmieren in Python ist die Typkonvertierung von Daten eine sehr wichtige Technik. Insbesondere ist die Fähigkeit, Strings und Zahlen gegenseitig zu konvertieren, für die Eingabe und Ausgabe von Daten sowie für Berechnungsprozesse unerlässlich. Zum Beispiel treten Szenarien häufig auf, in denen eine vom Benutzer in ein Formular eingegebene Zeichenkette als Zahl berechnet wird oder das Ergebnis einer Berechnung als Zeichenkette für die Anzeige formatiert wird. Allerdings kann das Mischen von Daten unterschiedlicher Typen zu Fehlern führen, weshalb Anfänger in Python Vorsicht walten lassen sollten. In diesem Artikel stellen wir die Methoden zur Konvertierung von „String zu Zahl“ und „Zahl zu String“ in Python vor und erläutern detailliert das Fehlerhandling sowie die Behandlung spezieller Fälle zusammen mit praktischen Beispielen. Es wäre schön, wenn dies eine Hilfe wäre, um Fähigkeiten vom grundlegenden bis zum fortgeschrittenen Programmieren in Python zu erwerben. Im nächsten Abschnitt erklären wir detailliert die grundlegenden Methoden zur Typkonvertierung in Python.

2. Grundlegende Typkonvertierung in Python

In Python werden direkte Operationen oft eingeschränkt, wenn die Datentypen unterschiedlich sind, und es ist notwendig, Daten zwischen verschiedenen Typen zu konvertieren. Indem Sie verstehen, wie man Strings in Zahlen konvertiert oder umgekehrt, können Sie flexibleren und fehlerärmeren Code schreiben. In diesem Abschnitt wird die grundlegende Typkonvertierung in Python mit „int()“ und „float()“ erläutert.

Konvertierung zu Ganzzahlen

Wenn eine Zahl als String eingegeben wird, müssen Sie diesen String zunächst in eine Ganzzahl oder eine Gleitkommazahl konvertieren, um numerische Berechnungen in Python durchzuführen. Zum Beispiel konvertieren Sie den String „42“ in die Ganzzahl42, indem Sie dieint()-Funktion wie folgt verwenden.
str_number = "42"
int_number = int(str_number)
print(int_number)  # Ausgabe: 42
So können Sie mit derint()-Funktion Strings in Ganzzahlen konvertieren. Nach erfolgreicher Konvertierung kann der Wert als Zahl verwendet werden. Beachten Sie, dass bei einem Versuch, einen String mit Dezimalpunkt wie"42.0" in einen Ganzzahltyp zu konvertieren, ein Fehler auftritt. Für die Konvertierung zu Ganzzahlen sind nur ganzzahlige Werte gültig; bei Dezimalstellen mussfloat()verwendet werden.

Konvertierung zu Gleitkommazahlen

Eine Gleitkommazahl ist ein Typ, der auch den Dezimalteil einer Zahl speichern kann. In Python können Sie einen String in eine Gleitkommazahl mit derfloat()-Funktion konvertieren. Zum Beispiel verwenden Sie den folgenden Code, um den String „3.14“ in eine Gleitkommazahl zu konvertieren.
str_float = "3.14"
float_number = float(str_float)
print(float_number)  # Ausgabe: 3.14
So können Sie mit derfloat()-Funktion Strings in Gleitkommazahlen konvertieren. Darüber hinaus können Strings in wissenschaftlicher Notation mitfloat()konvertiert werden, und Notationen wie"1.23e-4"werden unterstützt.
str_exp = "1.23e-4"
float_exp = float(str_exp)
print(float_exp)  # Ausgabe: 0.000123

Konvertierung von Zahlen zu Strings

Umgekehrt gibt es viele Situationen, in denen Zahlen in Strings konvertiert werden müssen. Zum Beispiel, wenn Sie eine Zahl mit anderen Strings kombinieren und anzeigen möchten. In diesem Fall verwenden Sie diestr()-Funktion.
num = 42
str_num = str(num)
print("Ergebnis der Konvertierung der Zahl zu String: " + str_num)  # Ausgabe: Ergebnis der Konvertierung der Zahl zu String: 42
So führt diestr()-Funktion die Konvertierung von Zahlen zu Strings durch und ermöglicht Operationen mit Strings, die Zahlen enthalten. Sobald Sie die grundlegenden Typkonvertierungen verstanden haben, schauen wir uns als Anwendung Konvertierungsmethoden für andere Zahlensysteme und Vollbreiten-Strings an.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. Anwendungsbeispiel: Konvertierung in mehrere Basen oder Vollbreiten-Zahlen

Nachdem die grundlegenden Typkonvertierungen in Python verstanden wurden, werden im Folgenden fortgeschrittene Fälle erläutert. In diesem Abschnitt werden die Konvertierungsmethoden für mehrere Basen wie Binär- und Hexadezimalzahlen sowie der Umgang mit Zahlen, die Vollbreiten-Zeichen enthalten, detailliert erklärt.

Konvertierung von Binär-, Oktal- und Hexadezimalzahlen

Die int()-Funktion in Python kann nicht nur Dezimalzahlen, sondern auch Strings in Binär-, Oktal- und Hexadezimalsystem umwandeln. Dabei wird als zweiter Parameter der Funktion die Basis (das Zahlensystem) angegeben. Zum Beispiel werden Strings in Binär- oder Hexadezimalsystem zu Ganzzahlen wie folgt konvertiert.
binary_str = "1010"  # Binärstring (2er-Basis)
octal_str = "12"  # Oktalstring (8er-Basis)
hex_str = "a"  # Hexadezimalstring (16er-Basis)

int_binary = int(binary_str, 2)
int_octal = int(octal_str, 8)
int_hex = int(hex_str, 16)

print(int_binary)  # Ausgabe: 10
print(int_octal)  # Ausgabe: 10
print(int_hex)  # Ausgabe: 10
Auf diese Weise können Binär-, Oktal- und Hexadezimal-Strings mit int() unter Angabe der jeweiligen Basis zu Ganzzahlen konvertiert werden. Diese Funktion ist besonders nützlich, wenn Daten aus mehreren Zahlensystemen verarbeitet werden müssen.

Verarbeitung von Vollbreiten-Zahlen und Sonderzeichen

Bei Benutzereingaben, die Strings mit Vollbreiten-Zahlen oder Sonderzeichen enthalten, kann es zu Fehlern kommen, wenn man sie direkt in Python konvertiert. Insbesondere bei japanischen Zahleingaben, die Vollbreiten-Zeichen mischen, kann Python sie oft nicht richtig verarbeiten, weshalb es empfohlen wird, die replace()-Methode zu verwenden, um Vollbreite in Halbbreite umzuwandeln. Das Folgende ist ein Beispiel, wie man einen Vollbreiten-String in Halbbreite umwandelt und dann zu einer Zahl konvertiert.
str_num_fullwidth = "12345"
str_num_halfwidth = str_num_fullwidth.translate(str.maketrans('0123456789', '0123456789'))

print(int(str_num_halfwidth))  # Ausgabe: 12345
Mit dieser Methode können auch Zahl-Strings in Vollbreite zu Zahlen konvertiert werden. Wenn auch der Dezimalpunkt in Vollbreite vorliegt, wird er wie folgt zusätzlich konvertiert.
str_float_fullwidth = "123.456"
str_float_halfwidth = str_float_fullwidth.translate(str.maketrans('0123456789.', '0123456789.'))

print(float(str_float_halfwidth))  # Ausgabe: 123.456

Konvertierung von Kanji-Zahlen

In Python kann das Unicode-Modul verwendet werden, um einige Kanji-Zahlen zu Zahlen zu konvertieren. Mit unicodedata.numeric() können Strings wie „1“ oder „100“ zu Gleitkommazahlen umgewandelt werden.
import unicodedata

kanji_num = '5'
converted_num = unicodedata.numeric(kanji_num)
print(converted_num)  # Ausgabe: 5.0
Allerdings unterstützt es keine Kanji-Zahlen mit mehreren Zeichen (z. B. „15“), daher werden für komplexere Fälle zusätzliche Bibliotheken oder Anpassungen mit regulären Ausdrücken empfohlen. Auf diese Weise bietet Python vielfältige Konvertierungsmethoden auch für Zahl-Strings. Im nächsten Abschnitt werden detailliert Methoden zur Überprüfung, ob Eingabewerte konvertierbar sind, und zur Fehlerbehandlung erläutert.

4. Fehlerbehandlung und Eingabevalidierung

In der Datenverarbeitung können Fälle auftreten, in denen Eingabedaten vom Benutzer oder Daten von extern nicht ordnungsgemäß in Zahlen umgewandelt werden können. Daher ist es wichtig, im Voraus zu prüfen, ob die Daten in Zahlen umgewandelt werden können, und bei Fehlern während der Umwandlung eine angemessene Verarbeitung durchzuführen. In diesem Abschnitt erklären wir Methoden zur Validierung der Eingabe und zur Fehlerbehandlung.

Zur Überprüfung von Zahlen: isdigit() und reguläre Ausdrücke

Als Methode, um im Voraus zu prüfen, ob eine Zeichenkette in eine Zahl umgewandelt werden kann, gibt es die Verwendung der isdigit()-Methode von Python oder regulärer Ausdrücke. isdigit() gibt True zurück, wenn die Zeichenkette vollständig aus Ziffern besteht, aber False, wenn Dezimalpunkte oder Minuszeichen enthalten sind. Daher ist es effektiv, um nur Ganzzahlen zu prüfen.
def is_integer(input_str):
    return input_str.isdigit()

# Verwendungsbeispiel
print(is_integer("123"))  # Ausgabe: True
print(is_integer("3.14"))  # Ausgabe: False
print(is_integer("-123"))  # Ausgabe: False
Einerseits ist die Verwendung von regulären Ausdrücken für die Überprüfung von Zahlen, die auch Gleitkommazahlen und negative Zahlen einschließen, bequem. Im folgenden Beispiel ist so eingestellt, dass auch Werte mit „+“ oder „-“ davor oder mit Dezimalpunkt True zurückgeben.
import re

def is_numeric(input_str):
    return bool(re.match(r'^[+-]?d+(.d+)?$', input_str))

# Verwendungsbeispiel
print(is_numeric("123"))       # Ausgabe: True
print(is_numeric("-123.45"))   # Ausgabe: True
print(is_numeric("3.14.15"))   # Ausgabe: False
print(is_numeric("abc"))       # Ausgabe: False
So kann man mit regulären Ausdrücken flexibler prüfen, ob es sich um eine Zahl handelt, was bei der Verarbeitung komplexer Eingabedaten hilfreich ist.

Fehlerbehandlung: Umgang mit Ausnahmen

In Python tritt bei der Umwandlung einer Zeichenkette in eine Zahl, wenn die Daten nicht angemessen sind, ein Fehler (ValueError) auf. Um diesen Fehler abzufangen und die Verarbeitung fortzusetzen, ist es üblich, try-except-Blöcke zur Ausnahmebehandlung zu verwenden. Im folgenden Beispiel wird, wenn bei der Umwandlung einer Zeichenkette in eine Ganzzahl ein Fehler auftritt, eine angemessene Fehlermeldung angezeigt.
def convert_to_int(input_str):
    try:
        return int(input_str)
    except ValueError:
        print(f"Fehler: '{input_str}' kann nicht in eine Ganzzahl umgewandelt werden.")
        return None

# Verwendungsbeispiel
print(convert_to_int("123"))  # Ausgabe: 123
print(convert_to_int("abc"))  # Ausgabe: Fehler: 'abc' kann nicht in eine Ganzzahl umgewandelt werden.
So kann durch Hinzufügen der Ausnahmebehandlung der Programmablauf auch bei Fehlern ohne Unterbrechung fortgesetzt werden. Zudem wird das Feedback für den Benutzer klarer, und die Behandlung von Eingabefehlern wird einfacher. Wenn die Validierung der Eingabedaten und die Fehlerbehandlung ordnungsgemäß durchgeführt werden, steigt die Zuverlässigkeit des Codes. Im nächsten Abschnitt schauen wir uns die Methode an, um Elemente einer Liste batchweise umzuwandeln.
年収訴求

5. Methode zur einheitlichen Umwandlung der Elemente einer Liste

Beim Datenverarbeiten kann es notwendig sein, die Elemente einer Liste, die aus Strings bestehen, batchweise in Zahlen umzuwandeln. Zum Beispiel werden CSV-Dateien oder Daten aus externen Quellen oft als Strings gespeichert. In diesem Abschnitt stellen wir die Methode zur batchweisen Umwandlung mit der List Comprehension in Python vor.

Batchweise Umwandlung mit List Comprehension

In Python kann man neben der Methode, die Elemente einer Liste mit einer Schleife zu verarbeiten, mit der List Comprehension eine knappe und effiziente Datenumwandlung durchführen. Die List Comprehension ist eine Methode, um für jedes Element einer Liste eine bestimmte Operation auszuführen und eine neue Liste zu generieren. Zum Beispiel, um eine Liste mit numerischen Strings in eine Liste von Ganzzahlen umzuwandeln, verwendet man den folgenden Code.
str_list = ["10", "20", "30", "40", "50"]
int_list = [int(i) for i in str_list]

print(int_list)  # Ausgabe: [10, 20, 30, 40, 50]
In diesem Beispiel wird durch die List Comprehension [int(i) for i in str_list] jedes Element in str_list mit der int()-Funktion in eine Ganzzahl umgewandelt und eine neue Liste int_list erstellt. Diese Methode ermöglicht mit kurzem Code die Verarbeitung großer Datenmengen und verbessert die Lesbarkeit und Performance des Codes.

Batchweise Umwandlung einer Liste mit Fehlerbehandlung

Wenn die Liste Elemente enthält, die nicht umgewandelt werden können (z. B. Strings oder Sonderzeichen), tritt ein Fehler auf. In diesem Fall kann man Bedingungen oder Ausnahmetehandlung in die List Comprehension einbauen, um Umwandlungsfehler zu vermeiden. Hier ist ein Beispiel, das nur umwandelbare Elemente in Ganzzahlen umwandelt.
str_list = ["10", "20", "abc", "30", "40"]

int_list = []
for i in str_list:
    try:
        int_list.append(int(i))
    except ValueError:
        print(f"Warnung: '{i}' konnte nicht in eine Ganzzahl umgewandelt werden.")

print(int_list)  # Ausgabe: [10, 20, 30, 40]
In diesem Code wird mit dem try-except-Block versucht, den String in eine Ganzzahl umzuwandeln, und bei Fehlschlag wird eine Fehlermeldung ausgegeben. Durch Hinzufügen nur umwandelbarer Elemente mit der append()-Methode zu int_list wird die Verarbeitung fortgesetzt, auch wenn Fehler auftreten, und das Umwandlungsergebnis erhalten. Die batchweise Umwandlung von Listen ist eine sehr nützliche Technik bei der Verarbeitung großer Datenmengen. Im nächsten Abschnitt fassen wir den gesamten Artikel zusammen und ordnen das Gelernte.

6. Zusammenfassung

In diesem Artikel haben wir die Methoden zur Konvertierung von «String zu Zahl» und «Zahl zu String» in Python von den Grundlagen bis zu fortgeschrittenen Anwendungen erläutert. Durch das Verständnis der Wichtigkeit der Typkonvertierung in der Datenverarbeitung und der effizienten Durchführungsmethoden erweitert sich der Umfang der Operationen in der Python-Programmierung. Im Folgenden fassen wir die Inhalte jeder Sektion kurz zusammen.

Rückblick auf den Artikel

  1. Einführung
  • Wir haben Situationen erläutert, in denen die Konvertierung zwischen Strings und Zahlen notwendig ist. Wir haben die Gründe gezeigt, warum Typkonvertierung in numerischen Berechnungen und Datenanzeigen wichtig ist.
  1. Grundlegende Typkonvertierung in Python
  • Als grundlegende Typkonvertierungsmethoden haben wir gelernt, wie man mit den Funktionen int(), float() und str() den Datentyp zwischen Strings und Zahlen ändert.
  1. Fortgeschrittene Beispiele: Konvertierung von Mehrfachbasen oder Vollbreiten-Zahlen
  • Wir haben Methoden zur Konvertierung von Binär-, Oktal- und Hexadezimalzahlen in Ganzzahlen sowie zur Konvertierung von Vollbreiten-Zeichen in Halbbreiten und deren Behandlung als Zahlen vorgestellt. Darüber hinaus haben wir die Methode zur Konvertierung von Kanji-Zahlen in Zahlen mit unicodedata.numeric() erläutert.
  1. Fehlerbehandlung und Validierung der Eingabe
  • Wir haben die Möglichkeit von Fehlern bei der Zahlenkonvertierung berücksichtigt und Methoden zur vorherigen Überprüfung, ob es sich um eine Zahl handelt, mit isdigit() oder regulären Ausdrücken sowie die Verwendung von try-except zur Behandlung von Ausnahmen vorgestellt.
  1. Methode zur Massenkonvertierung von Listenelementen
  • Wir haben die Methode zur Massenkonvertierung mit List Comprehension gelernt, die Behandlung von Fehlern bei Auftreten und Fähigkeiten erworben, um effizient zu verarbeiten, auch wenn die Datenmenge groß ist.

Zukünftige Einsatzmöglichkeiten

Die Typkonvertierung in Python ist in allen Datenverarbeitungen und grundlegenden Programmbetrieb involviert. Indem Sie in der zukünftigen Entwicklung angemessene Typkonvertierungen und Fehlerbehandlung praktizieren, können Sie das Auftreten von Fehlern reduzieren und qualitativ hochwertigeren Code schreiben. Zusätzlich zu den grundlegenden Konvertierungsmethoden, die Sie in diesem Artikel gelernt haben, werden Sie durch den Erwerb fortgeschrittener Techniken für Datenkonvertierungen in der Lage sein, komplexe Datenverarbeitungen effizient zu bewältigen. Durch diesen Artikel hoffe ich, dass Sie das notwendige Wissen und die Techniken für Typkonvertierungen in Python umfassend erlernt haben. Nutzen Sie es in Ihrer zukünftigen Programmentwicklung.