Typumwandlung in Python wird benötigt, um verschiedene Typen in andere Datentypen umwandeln zu können. Dafür stellt Python verschiedene Standard-Methoden zur Verfügung. So kannst du Strings in Integers oder Floats in Strings umwandeln.
Da der Computer manchmal einen String erwartet, du aber einen Integer hast, kommst du um eine Typumwandlung von Integer zu String nicht herum. Bevor du einen Datentypen umwandeln kannst solltest du wissen, welche Typen es gibt.
Es gibt Typen für Zahlen; das sind Integers oder Floats. Der Unterschied zwischen den beiden Typen ist, dass Integers nur ganze Zahlen enthalten, während Floats Gleitkommazahlen sind, also auf gut Deutsch: Zahlen mit einem Komma.
Zu beachten ist: Es gibt den Typ "Long" für längere Zahlen, wie in Python2, in Python3 nicht mehr. Dieser wurde vereinheitlicht auf nur noch Integer.
Weitere Typen werden in einem separierten Artikel ausführlich behandelt, der demnächst erscheint.
Die Umwandlung von Typen in Python folgt oft einem einzigen Schema und das sieht wie folgt aus: Als erstes gibt man den Datentyp an, in den man etwas umwandeln will. In unserer Infografik ist es Float.
Wir haben eine Variable "v". Diese ist auf der linken Seite in der Ausgangsposition ein Integer. Wir können sie mit der type()-Funktion überprüfen. Nun wandeln wir den Typen mit float(v) um. Als Ergebnisse erhalten wir auf der rechten Seite ein Float.
Über diese einfache Weise können wir aber auch Tuples in Listen umwandeln oder andersherum. Diese Variante geht bei den meisten Typen - mit ein paar Ausnahmen, die ich unten noch genauer behandeln werde.
Mit dieser Weise kannst du gut folgende Datentypen umwandeln: Strings,Int,Float und list,tuple,set. Boolean kann man mit dieser Variante auch ausgezeichnet in Integers, Floats und Strings umwandeln.
Warum du bestimmte Datentypen so nicht umwandeln kannst, erkläre ich dir im weiteren Verlauf dieses Artikels.
Bei Umwandlungen können verschiedene Probleme auftreten. Es gibt zwei häufig vorkommende Probleme, die ich hier einmal benennen will.
Im untenstehenden Code seht ihr, dass unsere Umwandlung nicht ordnungsgemäß funktioniert hat. Grund ist, dass unsere String nicht aus numerischen Zeichen besteht und daher nicht umgewandelt werden kann. Um einen String in einen Float oder Integer umzuwandeln, ist es also notwendig, dass dieser nur aus numerischen Zeichen besteht. Allerdings kann die base zum Beispiel auf 16 gestellt werden, also auf Hexadezimalzahlen. Dann sind auch Buchstaben von a bis f möglich.
>>> int(v)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'hello'
>>> float(v)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'hello'
Eine Aufruf der int-Typumwandlung mit einer Basis von 16 kann wie folgt aussehen:
int("f",base=16)
Bei einer Umwandlung von einem Float in einen Integer gehen in Python Daten verloren. Da der Integer keine Nachkommastellen darstellen kann, werden diese ohne Rundungen direkt abgeschnitten. So ist ein Float von 5.00001 und 5.99999 nach der Umwandlung beides 5, da nicht aufgerundet wird.
>>> int(5.0000001)
> 5
>>> int(5.9999999)
> 5
Angenommen, wir haben eine Liste von Strings, die nur Zahlen enthält. Dann können wir natürlich auch alle auf einmal umwandeln, anstatt alle einzeln umzuwandeln. Hierzu können wir den map-Befehl nutzen.
zahlenwerte = ["5","6","7","8"]
zahlenwerte = list(map(int,zahlenwerte)
print(zahlenwerte)
# [5, 6, 7, 8]
Als Ergebnisse erhalten wir eine Liste mit Integer-Werten.
Natürlich können wir Listen auch in Strings umwandeln. Dafür gibt es verschiedene Methoden - wir können einfach unsere Liste durch den str()-Befehl jagen, wir können es aber auch mit einem anderen ausgewählten Separator schnell und einfach trennen.
elemente = ["Haus","Keller","Wohnung","Garage"]
print(str(elemente))
# "["Haus","Keller","Wohnung","Garage"]"
Nun haben wir einen String mit einer Abbildung der ursprünglichen Liste. Als meiner Meinung nach sehr viel elegantere Alternative können wir jedoch auch den join-Befehl nutzen.
elemente = ["Haus","Keller","Wohnung","Garage"]
print(" - ".join(elemente))
# "Haus - Keller - Wohnung - Garage"
Als Ergebnisse erhalten wir eine deutlich schönere Anordnung als mit dem String-Befehl.
Im Grunde ist das Umwandeln von Strings in Liste ähnlich zu dem Umwandeln einer Liste in Strings. Lediglich der Befehl ändert sich, der am Anfang auf den String angewendet wird.
Beziehen wir uns wieder auf das Resulat aus dem Beispiel von "Liste in Strings umwandeln". Diesmal wollen wir den Typen wieder zurück zu einer Liste umwandeln.
>>> v.split(" - ")
['Haus', 'Keller', 'Wohnung', 'Garage']
Mit dem Split-Befehl können wir einfach sagen, an welchen Zeichen der String gesplittet werden soll. Zum Beispiel könnte man so auch Texte an Leerstellen splitten, dann alle Einzelzeichen, die eventuell durch Tippfehler kommen, aus der Liste löschen. Und dann erhalten wir ganz einfach die Wortanzahl von einem String.
Die Umwandlung von Dictonary in Liste mit dem Befehl list() macht keinen Sinn, da dort aus einem Key Value Pair nur der Key in die Liste Geschrieben wird. Dort empfehlt es sich, über die Liste dann zum Beispiel zu iterieren und es selbst in die gewünschte Form zu bringen, da dort viel Spielraum für verschiedene Interpretationen ist.
Mit dieser Anleitung solltest du nun fähig sein, alle wichtigen Datentypen in Python umwandeln zu können und dein Programm über alle Datentypen hinweg schreiben zu können.
Hinterlasse mir gerne einen Kommentar zum Artikel und wie er dir weitergeholfen hat beziehungsweise, was dir helfen würde das Thema besser zu verstehen. Oder hast du einen Fehler entdeckt, den ich korrigieren sollte? Schreibe mir auch dazu gerne ein Feedback!
Es sind noch keine Kommentare vorhanden? Sei der/die Erste und verfasse einen Kommentar zum Artikel "Typumwandlung in Python"!