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
Antwort
könnten Sie Schwimmer zuerst verwenden und dann konvertieren, wie in int unter
>>>a= '4,942.221s'
>>>int(float(a.replace(',', '').replace('s','')))
>>>4942
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
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
- 1. Math.Pow einen ganzzahligen Wert
- 2. Konvertieren von amerikanischen Daten mit Zeitstempel
- 3. Wie kann ich eine Zeichenfolge in einen TColor-Wert konvertieren?
- 4. Konvertieren Sie eine hexadezimale Zeichenfolge in einen vorzeichenlosen Dezimalwert
- 5. Abrufen ganzzahligen Wert von der UITextField in eine variable NSInteger
- 6. Überprüfen Sie einen ganzzahligen Wert ist Null in C#
- 7. Konvertieren ganzzahligen Farbwerts in RGB
- 8. Sie müssen einen eindeutigen ganzzahligen Wert mit Klassen verknüpfen
- 9. Wie konvertiert man in MIPS einen doppelten Wert in einen ganzzahligen Wert?
- 10. Konvertieren Zeichenfolge Wert Funktionsaufruf
- 11. Konvertiere die numerische Zeichenkette in einen ganzzahligen Wert
- 12. Konvertieren Sie binäre Zeichenfolge in Ganzzahl in PHP
- 13. Konvertieren Sie eine ASCII-Zeichenfolge in Hex-Zeichenfolge
- 14. Konvertieren von zufälligen Bytes in einen ganzzahligen Bereich - wie?
- 15. konvertieren Sie eine Zeichenfolge in eine Variante in C++
- 16. konvertieren Sie eine Ganzzahl in eine Zeichenfolge - VHDL
- 17. Konvertieren Sie eine Zeichenfolge in ISO-Datumsformat
- 18. So konvertieren Sie eine Zeichenfolge in NSData
- 19. einen Vektor von String in einen Vektor von ganzzahligen
- 20. wie einen vordefinierten ganzzahligen Wert in SPIM Codeabschnitt
- 21. SQL So konvertieren Sie eine Dezimalzahl in eine Zeichenfolge
- 22. Eine Zeichenfolge im Format ddMMyyyy in eine DateTime konvertieren
- 23. String.match.length, das Array zurückgibt. Erwarte einen ganzzahligen Wert.
- 24. Konvertieren einer Zeichenfolge, die einen hexadezimalen Wert enthält, der mit "0x" beginnt, in eine ganze Zahl oder eine lange Zahl
- 25. Dividieren integer und ganzzahligen Wert
- 26. Konvertieren einer Zeichenfolge in einen Gregorianischen Kalender
- 27. holen ganzzahligen Wert von sharedpreference
- 28. Konvertieren Sie eine Zeichenfolge in eine swt Farbe
- 29. Wie kann ich eine Datetime-Zeichenfolge in SQLite3 in einen UNIX-Zeitstempel konvertieren?
- 30. Wie funktioniert winzige URL
Was meinen Sie "ohne das Komma zu entfernen?" –
@ 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
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. –