Zahlenkette str in Zahl int, float in Python umwandeln

Geschäft

Wenn Sie eine Zahlenkette in Python in numerische Werte umwandeln wollen, verwenden Sie int() zur Umwandlung in Ganzzahlen und float() zur Umwandlung in Fließkommazahlen.

Das Folgende wird hier erklärt, zusammen mit einem Beispielcode.

  • Grundlegende Verwendung
    • Konvertierung numerischer Zeichenketten in ganze Zahlen:int()
    • Konvertierung einer Zahlenfolge in Gleitkommazahlen:float()
  • Besondere Verwendung
    • Konvertiert Zeichenketten in binärer, oktaler und hexadezimaler Schreibweise in Zahlen
    • Konvertiert Zeichenketten in Exponentialschreibweise in numerische Werte
    • Konvertierung von arabischen Zahlenketten in voller Breite in Zahlen
    • Umwandlung einer Zeichenkette aus chinesischen Zeichen in Zahlen

Um einen numerischen Wert in eine Zeichenkette zu konvertieren, verwenden Sie str().

Wenn Sie Zahlen oder Strings in verschiedene Formate konvertieren wollen, verwenden Sie die Funktion format() oder die String-Methode str.format(). Dann können Sie in 0-Füllung, Binär, Oktal, Hexadezimal, Exponentialschreibweise usw. konvertieren. Siehe den folgenden Artikel für weitere Einzelheiten.

Es kann auch eine Liste von Zeichenketten in eine Liste von Zahlen umwandeln. Siehe den folgenden Artikel für Details.

Konvertierung numerischer Zeichenketten in ganze Zahlen: int()

Sie können int() verwenden, um eine Zeichenkette mit Zahlen in Zahlen vom Typ Integer zu konvertieren.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

Dezimalzahlen, einschließlich Dezimalpunkte, und durch Kommata getrennte Zeichenfolgen führen zu einem ValueError.

# print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'

# print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'

Durch Kommata getrennte Zeichenketten können konvertiert werden, indem das Komma entfernt (durch eine leere Zeichenkette ersetzt) und die Methode replace() verwendet wird.

print(int('10,000'.replace(',', '')))
# 10000

Konvertierung einer Zahlenfolge in Gleitkommazahlen: float()

Ein float() kann verwendet werden, um eine Zahlenfolge in einen Fließkommazahlentyp umzuwandeln.

print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>

Zeichenketten, bei denen der ganzzahlige Teil weggelassen wird, werden umgewandelt, indem der ganzzahlige Teil mit 0 ergänzt wird.

print(float('.23'))
# 0.23

Ganzzahlige Zeichenketten werden ebenfalls in Gleitkommazahlen umgewandelt.

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Konvertiert Zeichenketten in binärer, oktaler und hexadezimaler Schreibweise in Zahlen

Wird als zweites Argument von int() ein Radix angegeben, kann die Zeichenkette in eine Ganzzahl int umgewandelt werden, indem sie als binär, oktal, hexadezimal usw. betrachtet wird.

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256

Wie in den vorangegangenen Beispielen wird die Zahl als Dezimalzahl betrachtet, wenn sie weggelassen wird.

print(int('100', 10))
print(int('100'))
# 100
# 100

Wenn das Radix auf 0 gesetzt ist, basiert die Konvertierung auf dem Zeichenfolgenpräfix. Siehe unten für String-Präfixe.

  • 0b
    • 0B
  • 0o
    • 0O
  • 0x
    • 0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256

Präfixe und Hex-Alphabete können sowohl in Groß- als auch in Kleinbuchstaben geschrieben werden.

print(int('FF', 16))
print(int('ff', 16))
# 255
# 255

print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))
# 255
# 255
# 255
# 255

Im folgenden Artikel finden Sie Informationen zur Umrechnung von binären, oktalen und hexadezimalen Zahlen und Zeichenketten.

Konvertiert Zeichenketten in Exponentialschreibweise in numerische Werte

Strings in Exponentialschreibweise können mit float() direkt in den Typ float umgewandelt werden.

print(float('1.23e-4'))
print(type(float('1.23e-4')))
# 0.000123
# <class 'float'>

print(float('1.23e4'))
print(type(float('1.23e4')))
# 12300.0
# <class 'float'>

Das kleine e kann auch als E großgeschrieben werden.

print(float('1.23E-4'))
# 0.000123

Konvertierung von arabischen Zahlenketten in voller Breite in Zahlen

Arabische Ziffern in voller Breite können mit int() oder float() direkt in Zahlen umgewandelt werden.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Wenn jedoch Symbole wie Minuszeichen und Dezimalpunkte Zeichen mit voller Breite sind, wird ein ValueError erzeugt.

# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'

Zahlen können ohne Probleme konvertiert werden, wenn sie Zeichen mit voller Breite sind, aber Minuszeichen und Dezimalpunkte sind Zeichen mit halber Breite. Die Konvertierung ist möglich, indem Symbole mit voller Breite durch Symbole mit halber Breite mit der Methode replace() ersetzt werden.

print(float('-1.23'))
# -1.23

print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23

Umwandlung einer Zeichenkette aus chinesischen Zeichen in Zahlen

Die Funktion unicodedata.numeric() im Modul unicodedata kann verwendet werden, um ein einzelnes chinesisches Unicode-Zeichen in eine Zahl vom Typ Fließkommazahl umzuwandeln.

Wenn es sich nicht um einen einzelnen Buchstaben handelt, wird ein Fehler auftreten. Auch nicht-numerische Zeichen führen zu einem Fehler.

import unicodedata

print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>

print(unicodedata.numeric('十'))
# 10.0

print(unicodedata.numeric('参'))
# 3.0

print(unicodedata.numeric('億'))
# 100000000.0

# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str

# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character