Wie kann ich einen String konvertieren, der gerne in Python 123,456.908
schwebt 123456.908
?
python
type-conversion
Kevinlu
quelle
quelle
locale
Moduls - alles andere ist nur ein sehr böser Hack, der Sie in Zukunft in Schwierigkeiten bringen wird.Antworten:
Entfernen Sie einfach das
,
mitreplace()
:float("123,456.908".replace(',',''))
quelle
python cd_size = float("737,280,000".replace(',',''))
(Ich habe tatsächlich int verwendet)setlocale
in erster Linie.... Oder anstatt die Kommas als herauszufilternden Müll zu behandeln, könnten wir die Gesamtzeichenfolge als lokalisierte Formatierung des Floats behandeln und die Lokalisierungsdienste verwenden:
from locale import atof, setlocale, LC_NUMERIC setlocale(LC_NUMERIC, '') # set to your default locale; for me this is # 'English_Canada.1252'. Or you could explicitly specify a locale in which floats # are formatted the way that you describe, if that's not how your locale works :) atof('123,456') # 123456.0 # To demonstrate, let's explicitly try a locale in which the comma is a # decimal point: setlocale(LC_NUMERIC, 'French_Canada.1252') atof('123,456') # 123.456
quelle
Extension modules should never call setlocale()
atof
eingebaute Methode von Strings . Was ich hier benutze, ist die Funktionatof
aus demlocale
Standardbibliotheksmodul, die überhaupt nicht veraltet ist.locale.atof
Wenn Sie das Gebietsschema nicht kennen und eine beliebige Zahl analysieren möchten, verwenden Sie diese
parseNumber(text)
Funktion . Es ist nicht perfekt, berücksichtigt aber die meisten Fälle:>>> parseNumber("a 125,00 €") 125 >>> parseNumber("100.000,000") 100000 >>> parseNumber("100 000,000") 100000 >>> parseNumber("100,000,000") 100000000 >>> parseNumber("100 000 000") 100000000 >>> parseNumber("100.001 001") 100.001 >>> parseNumber("$.3") 0.3 >>> parseNumber(".003") 0.003 >>> parseNumber(".003 55") 0.003 >>> parseNumber("3 005") 3005 >>> parseNumber("1.190,00 €") 1190 >>> parseNumber("1190,00 €") 1190 >>> parseNumber("1,190.00 €") 1190 >>> parseNumber("$1190.00") 1190 >>> parseNumber("$1 190.99") 1190.99 >>> parseNumber("1 000 000.3") 1000000.3 >>> parseNumber("1 0002,1.2") 10002.1 >>> parseNumber("") >>> parseNumber(None) >>> parseNumber(1) 1 >>> parseNumber(1.1) 1.1 >>> parseNumber("rrr1,.2o") 1 >>> parseNumber("rrr ,.o") >>> parseNumber("rrr1rrr") 1
quelle
Wenn Sie ein Komma als Dezimaltrennzeichen und den Punkt als Tausendertrennzeichen haben, können Sie Folgendes tun:
s = s.replace('.','').replace(',','.') number = float(s)
Hoffe es wird helfen
quelle
Was ist damit?
my_string = "123,456.908" commas_removed = my_string.replace(',', '') # remove comma separation my_float = float(commas_removed) # turn from string to float.
Zusamenfassend:
my_float = float(my_string.replace(',', ''))
quelle
s = "123,456.908" print float(s.replace(',', ''))
quelle
Hier ist eine einfache Möglichkeit, die ich für Sie geschrieben habe. :) :)
>>> number = '123,456,789.908'.replace(',', '') # '123456789.908' >>> float(number) 123456789.908
quelle
re
ist ein großer Hammer für eine solche Aufgabe.float(number)
wegen seiner beschreibenden Note. +1 ;-)Einfach durch
,
replace () ersetzen.f = float("123,456.908".replace(',','')) print(type(f)
type () zeigt Ihnen, dass es in einen float konvertiert wurde
quelle
Bessere Lösung für verschiedene Währungsformate :
def text_currency_to_float(text): t = text dot_pos = t.rfind('.') comma_pos = t.rfind(',') if comma_pos > dot_pos: t = t.replace(".", "") t = t.replace(",", ".") else: t = t.replace(",", "") return(float(t))
quelle