Wie kann ich in Python eine numerische Zeichenfolge wie "545.2222" auf den entsprechenden Gleitkommawert 542.2222 analysieren? Oder analysieren Sie die Zeichenfolge "31" auf eine Ganzzahl, 31?
Ich möchte nur wissen, wie man einen Float-String in einen Float und (separat) einen Int-String in einen Int analysiert.
Es ist gut, dass Sie darum bitten, dies separat zu tun. Wenn Sie sie mischen, können Sie sich später auf Probleme einstellen. Die einfache Antwort lautet:
"545.2222"
schweben:
>>> float("545.2222")
545.2222
"31"
zu einer ganzen Zahl:
>>> int("31")
31
Andere Konvertierungen, Ints zu und von Strings und Literalen:
Konvertierungen von verschiedenen Basen, und Sie sollten die Basis im Voraus kennen (10 ist die Standardeinstellung). Beachten Sie, dass Sie ihnen das voranstellen können, was Python für seine Literale erwartet (siehe unten), oder das Präfix entfernen können:
>>> int("0b11111", 2)
31
>>> int("11111", 2)
31
>>> int('0o37', 8)
31
>>> int('37', 8)
31
>>> int('0x1f', 16)
31
>>> int('1f', 16)
31
Wenn Sie die Basis nicht im Voraus kennen, aber wissen, dass sie das richtige Präfix haben, kann Python dies für Sie ableiten, wenn Sie 0
als Basis übergeben:
>>> int("0b11111", 0)
31
>>> int('0o37', 0)
31
>>> int('0x1f', 0)
31
Nicht dezimale (dh ganzzahlige) Literale aus anderen Basen
Wenn Ihre Motivation darin besteht, dass Ihr eigener Code eindeutig fest codierte spezifische Werte darstellt, müssen Sie möglicherweise nicht von den Basen konvertieren - Sie können Python dies automatisch mit der richtigen Syntax für Sie tun lassen.
Sie können die Präfixe apropos verwenden, um eine automatische Konvertierung in Ganzzahlen mit zu erhalten den folgenden Literalen zu erhalten . Diese gelten für Python 2 und 3:
Binär, Präfix 0b
>>> 0b11111
31
Oktal, Präfix 0o
>>> 0o37
31
Hexadezimal, Präfix 0x
>>> 0x1f
31
Dies kann nützlich sein, wenn Sie Binärflags, Dateiberechtigungen im Code oder Hex-Werte für Farben beschreiben. Beachten Sie beispielsweise keine Anführungszeichen:
>>> 0b10101 # binary flags
21
>>> 0o755 # read, write, execute perms for owner, read & ex for group & others
493
>>> 0xffffff # the color, white, max values for red, green, and blue
16777215
Mehrdeutige Python 2-Oktale mit Python 3 kompatibel machen
Wenn Sie in Python 2 eine Ganzzahl sehen, die mit einer 0 beginnt, ist dies eine (veraltete) Oktalsyntax.
>>> 037
31
Es ist schlecht, weil es so aussieht, als ob der Wert sein sollte 37
. In Python 3 wird nun Folgendes ausgelöst SyntaxError
:
>>> 037
File "<stdin>", line 1
037
^
SyntaxError: invalid token
Konvertieren Sie Ihre Python 2-Oktale in Oktale, die sowohl in 2 als auch in 3 funktionieren, mit dem 0o
Präfix:
>>> 0o37
31
type(my_object)
auf. Das Ergebnis kann normalerweise als Funktion für die Konvertierung aufgerufen werden. Diestype(100)
führt beispielsweise zuint
, sodass Sie aufrufen können, umint(my_object)
zu versuchen,my_object
in eine Ganzzahl zu konvertieren . Dies funktioniert nicht immer, ist aber eine gute "erste Vermutung" beim Codieren.