2017-11-07 1 views
2

Ich würde gerne wissen, wie man eine Zahl in ein formatiertes "Zahl" -Format, das Kommas hat, konvertieren. Ich bin auf Mac OSX. Ein Ausdruck ist in einem Eintrag Widget eingegeben und ausgewertet und dann ausgegeben in einen Label-Widget mit der folgenden Funktion:Python Tkinter Format Nummer Eintrag mit Kommas

def evaluate(self, event): 
    data = self.e.get() 
    self.ans.configure(text = "Answer: " + str(eval(data))) 

I die resultierenden Ausgabe muß in einem „Nummer“ Format. Zum Beispiel, wenn die Ausgabe "34523000" ist, möchte ich sagen "34,523,000".

+0

benötigen Sie eine Nummer , um eine Berechnung oder eine formatierte Zeichenfolge dieser Nummer durchzuführen? – PRMoureu

+0

@PRMoureu Der Code, den ich brauche, ist der letzte Schritt, NACHDEM die Auswertung bereits erfolgt ist. Also, ich brauche eine formatierte Version der Ausgabe der Auswertung. – oezeadi

Antwort

1

Verwenden Sie das Modul locale.

Wenn Sie auf Ubuntu sind, können Sie die Liste Ihrer Gebietsschemata überprüfen, indem Sie in Ihrem Terminal locale -a eingeben. Auf meinem Rechner sehe ich eine lange Liste, aus der ich z. B. 'en_US.utf8' auswähle.

Sobald Sie das getan haben, auf Ihre Funktion gehen Sie zurück und machen diese Änderungen:

import locale 
# ... 
# ... 
# It is better to run this outside your function: 
locale.setlocale(locale.LC_ALL, 'en_US.utf8') 
# ... 
# ... 
def evaluate(self, event): 
    entry_data = self.e.get() 
    data = locale.format("%d", entry_data, grouping=True) 
    # ... 
    # ... 

Hier ist eine kurze Demo mit dem Beispiel von Ihnen angegebenen Daten:

>>> import locale 
>>> locale.setlocale(locale.LC_ALL, 'en_US.utf8') 
'en_US.utf8' 
>>> locale.format("%d", 34523000, grouping=True) 
'34,523,000' 
+0

Ich benutze Mac OSX mit Spyder - würde das immer noch mit Mac funktionieren? – oezeadi

+0

Der Befehl, den ich bereitgestellt habe (sollte funktionieren) (https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/locale.1.html) unter OS X. Das Programm auch @oezeadi –

+0

Ich habe es versucht, aber den Fehler: "nicht unterstützte Gebietsschema Einstellung". Ich habe die locale.setlocale-Zeile in die init-Funktion meiner Klasse eingefügt. Soll ich das in die Funktion stellen? – oezeadi