Wie konvertiert man String in Float oder Int in Python
-
float()
zur Konvertierung von Strings in Float in Python -
int()
konvertiert den String in Python zu int -
ast.literal_eval
um eine Zeichenkette in Python in float oder int zu konvertieren - Lokalisierung und Kommas bei der Konvertierung von Zeichenketten nach Fließkomma in Python
- Vergleich der Leistungen verschiedener Methoden zur Konvertierung von String in float oder int in Python
Dieser Tutorial-Artikel stellt vor, wie man String in Python in float oder int konvertiert.
float()
zur Konvertierung von Strings in Float in Python
float()
konvertiert den String in die float
Zeigernummer, wenn möglich.
>>> float('111.2222')
111.2222
>>> float('111.0')
111.0
>>> float('111')
111.0
int()
konvertiert den String in Python zu int
int()
könnte den String in einen Integer konvertieren, wenn der angegebene String die Repräsentation eines Integers ist. Andernfalls wird es ValueError
auslösen.
>>> int('111')
111
>>> int('111.0')
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
int('111.0')
ValueError: invalid literal for int() with base 10: '111.0'
>>> int('111.22222')
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
int('111.22222')
ValueError: invalid literal for int() with base 10: '111.22222'
Sie könnten die Zeichenkette zuerst in float
konvertieren und dann in int
umwandeln, wenn die angegebene Zeichenkette die Repräsentation einer Fließkommazahl ist.
>>> int(float('111.0'))
111
ast.literal_eval
um eine Zeichenkette in Python in float oder int zu konvertieren
ast.literal_eval(string)
wertet die angegebene Zeichenkette, die einen Python-Ausdruck enthält, sicher aus. Es könnte die Zeichenkette entweder automatisch in float
oder int
konvertieren.
>>> ast.literal_eval('111.2222')
111.2222
>>> ast.literal_eval('111.0')
111.0
>>> ast.literal_eval('111')
111
Lokalisierung und Kommas bei der Konvertierung von Zeichenketten nach Fließkomma in Python
Wenn das Komma ,
in der String-Darstellung existiert, dann wird die float
-Konvertierung eine ValueError
-Exception auslösen. Aber Kommas werden in Ländern wie den USA oder Großbritannien regelmäßig entweder als Tausendertrennzeichen verwendet, zum Beispiel 111,111.22
, oder als Dezimalzeichen in den meisten europäischen Ländern, zum Beispiel 111,222
.
>>> float('111,111.22')
Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
float('111,111.22')
ValueError: could not convert string to float: '111,111.22'
>>> float('111,111')
Traceback (most recent call last):
File "<pyshell#55>", line 1, in <module>
float('111,111')
ValueError: could not convert string to float: '111,111'
Das locale
Modul sollte verwendet werden, um die lokalen Informationen zuzuweisen und dann könnte die Funktion locale.atof()
die angegebene Zeichenkette als Fließkommazahl entsprechend der lokalen Einstellungen analysieren.
Kommas als Tausender-Trennzeichen in US oder UK
>>> import locale
>>> A = '111,111.222'
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> locale.atof(A)
111111.222
>>> locale.atof('111,111')
111111.0
Das Komma ,
könnte richtig interpretiert werden, wenn die richtige Gebietsschema-Einstellung angegeben wird.
Beachten Sie auch, dass das Konvertierungsergebnis immer ein float
Typ ist, auch wenn die angegebene Zeichenkettenrepräsentation ein Integer ist.
Kommas als demische Zeichen in europäischen Ländern
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'nl_NL')
'nl_NL'
>>> locale.atof('111,222')
111.222
>>> locale.atof('111.111,222')
111111.222
111.222
wird richtig in 111.222
umgewandelt, und 111.111,222
könnte auch richtig in 1111.222
umgewandelt werden, da der Punkt .
in europäischen Ländern wie den Niederlanden als Tausendertrennzeichen verwendet wird.
Vergleich der Leistungen verschiedener Methoden zur Konvertierung von String in float oder int in Python
Wir verwenden timeit
, um die Effizienzleistungen zwischen verschiedenen Methoden zu überprüfen.
>>> import timeint
>>> timeit.timeit('float(111.2222)', number=1000000)
0.14707240000007005
>>> timeit.timeit('ast.literal_eval("111.2222")', setup='import ast', number=1000000)
4.779956100000163
>>> timeit.timeit('locale.atof("111.2222")', setup='import locale; locale.setlocale(locale.LC_ALL, "en_US.UTF-8")', number=1000000)
6.092166299999917
Die ast.literal_eval()
Methode ist enorm langsamer als die float
Methode, wie oben gezeigt. Sie sollte nicht die erste Wahl sein, wenn Sie in Python einfach nur Strings in float oder int konvertieren müssen. ast.literal_eval()
ist in dieser Anwendung überdimensioniert, da ihr Hauptziel die Auswertung der Zeichenkette sein sollte, die den Python-Ausdruck enthält.
locale.atof()
ist auch extrem langsam, daher sollte es nur verwendet werden, wenn in der Zeichenkette Kommas für die Konvention in US oder UK vorhanden sind, oder Punkt .
bedeutet den Tausendertrenner, aber Komma ,
bedeutet das Dezimalzeichen in europäischen Ländern. Mit anderen Worten, Sie sollten locale.atof()
verwenden, wenn es wirklich notwendig ist.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookVerwandter Artikel - Python String
- Entfernen Kommas aus String in Python
- Wie man prüft, ob eine Zeichenkette auf pythonische Weise leer ist
- Konvertieren einer Zeichenkette in einen Variablennamen in Python
- Wie man Leerzeichen in einem String in Python entfernt
- Wie man in Python Zahlen aus einer Zeichenkette extrahiert
- Wie man in Python String in datetime konvertiert