2016-07-22 2 views
1

Ich habe eine Zeichenfolge im amerikanischen Format, die Sekunden eines verstrichenen Ereignisses zeigt, wie 4,942.221s. Wie wäre der pythischste Weg, um dies in eine ganze Zahl zu konvertieren, ohne das Komma zu analysieren und zu entfernen. Ich möchte die einfachen Sekunden bekommen, die in diesem Fall 4942 wären, ms kann abgeschnitten werden.Konvertieren Sie eine winzige Zeichenfolge im amerikanischen Stil in einen ganzzahligen Wert

+0

Was meinen Sie "ohne das Komma zu entfernen?" –

+0

@ juanpa.arrivillaga In Deutschland teilt man große Zahlen nicht mit einem Komma auf, also würde man nicht etwa 4.723.192.123 sondern 4723182.123 sagen. – ferdy

+0

Ich bin mir der Unterschiede in den Formatierungsnummern in verschiedenen Gebietsschemas bewusst. Ich sehe aus Ihrem Kommentar in einer anderen Antwort, dass Sie wahrscheinlich nach der Bibliotheksfunktion 'locale' suchen. –

Antwort

1

könnten Sie Schwimmer zuerst verwenden und dann konvertieren, wie in int unter

>>>a= '4,942.221s' 
>>>int(float(a.replace(',', '').replace('s',''))) 
>>>4942 
+0

Dies ist momentan eine Lösung für mich. Dank dafür. Worüber ich nachgedacht habe, war eine Art allgemeiner Ansatz, bei dem das Zahlenformat je nach Zeitzone verwendet wurde. Ich kenne solche Mechanismen in Python noch nicht und würde gerne etwas darüber erfahren. – ferdy

1

Sie konnten erreichen dies die locale-Bibliothek, die

Programmierer mit bestimmten kulturellen Fragen in einem zu behandeln erlaubt Anwendung, ohne dass der Programmierer alle Besonderheiten jedes Landes, in dem die Software ausgeführt wird, kennt.

Normalerweise würde dies bei bestimmten Fragen der Formatierung Strings und so zu behandeln verwendet werden, während der locale sind Agnostiker zu, aber wenn Ihr System der amerikanischen Englisch Ort Einstellungen unterstützt, dann können Sie den folgenden tun, das ist ein bisschen hackey, Ihr Problem zu lösen:

>>> import locale 
>>> locale.setlocale(locale.LC_NUMERIC, 'en_US.UTF-8') 
'en_US.UTF-8' 
>>> locale.atoi('123,456,789') 
123456789 
>>> locale.atof('123,456.787') 
123456.787 
>>> locale.setlocale(locale.LC_NUMERIC, 'de_DE') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/juan/anaconda3/lib/python3.5/locale.py", line 595, in setlocale 
    return _setlocale(category, locale) 
locale.Error: unsupported locale setting 
>>> american_string = '4,942.221s' 
>>> int(locale.atof(american_string[:-1])) 
4942 

Sie könnten das genaue Argument herauszufinden, passieren auf den zweiten Parameter der Funktion setlocale müssen, weil es auf Ihrem System ab. Beachten Sie beispielsweise den Fehler, als ich versuchte, das deutsche Gebietsschema festzulegen, das derzeit nicht auf meinem System unterstützt wird. Wenn Sie auf Ubuntu sind, sollte folgendes funktionieren: sudo apt-get install language-pack-en-base

Verwandte Themen