2016-11-02 2 views
0

Gibt es eine einfache Möglichkeit, Schnur zu drehen wieEine einfache Möglichkeit, eine Zeichenfolge mit nicht ganzzahligen Zeichen zu drehen, auf eine ganze Zahl

251.13M 
201.41B 

in einer ganzen Zahl?

Oder ist es der starre Ansatz (nur einen, den ich mir vorstellen kann), um den Index von "." und 'M' und tun einige substring

+0

Haben Sie versucht, Ihr eigenes Programm zu schreiben, um es zu tun? – boboquack

+0

Ich bin im Fortschritt. Aber es wird sehr langweilig. Vielleicht, weil ich nicht so geschickt bin. Also habe ich mich gefragt, ob es einen leichten Weg dorthin gibt. – vandelay

+0

Möchten Sie eine Ganzzahl oder einen Gleitkommawert? Ich nehme an, das sind Bytes? MB und B? Oder Millionen und Milliarden? –

Antwort

1

Ich bin ziemlich sicher, dass es kein direkter Weg ist, (d. Ein Anruf einzelne Funktion) von der Antwort zu bekommen. Aber Sie könnten einen einfachen Code wie unten verwenden.

valD = {"M" : 6, "B" : 9} 

def getNumber(nstring): 
    if nstring[-1] in valD: 
     return int(float(nstring[:-1]) * 10**valD[nstring[-1]]) 
    else: 
     return int(nstring) 
+0

Das war viel glatter als das, was ich vorhatte, danke! – vandelay

1

Wenn sie alle dieses genaue Format sind, sollte dies funktionieren, wie es den Buchstaben am Ende hüpft, es als Float und dann ein Int, die die Dezimalstellen abgeschnitten werden soll .

int(float(str1[:-1])) 
+0

Oder auf den Zeitraum aufgeteilt. Werfen Sie einfach den Int –

3

Wenn Sie die Stückelung erhalten wollen Sie ein Wörterbuch verwenden, um den letzten Brief an Tausende, Millionen, Milliarden zur Karte usw.

denominations = { 
    'K': 1000, 
    'M': 1000000, 
    'B': 1000000000 
} 

Sie dann, ob das letzte Zeichen überprüfen überprüfen eine Bezeichnung, da es optional sein könnte.

head = str1[:-1] # everything except the last character 
tail = str1[-1] # only the last character 

# if the tail is one of the denominations, multiple the value 
if tail in denominations: 
    value = int(float(head)) * denominations[tail] 
else: 
    value = int(float(str1)) 

HINWEIS: Diese weiter optimiert werden kann, aber ich habe es lange Hand geschrieben, um deutlich zu machen, was los ist.

Verwandte Themen