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()
- Konvertierung numerischer Zeichenketten in ganze Zahlen:
- 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.
- VERBUNDEN:Formatkonvertierung in Python, Format (0-Füllung, Exponentialschreibweise, Hexadezimal, usw.)
Es kann auch eine Liste von Zeichenketten in eine Liste von Zahlen umwandeln. Siehe den folgenden Artikel für Details.
- VERBUNDEN:Konvertierung von Listen mit Zeichenketten (Arrays) und Listen mit Zahlen in Python ineinander
- Konvertierung numerischer Zeichenketten in ganze Zahlen: int()
- Konvertierung einer Zahlenfolge in Gleitkommazahlen: float()
- 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
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.
- VERBUNDEN:Konvertieren von binären, oktalen und hexadezimalen Zahlen und Zeichenketten in Python ineinander
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