
Hallo,
welche Strategien setzt ihr ein, um in floats aus dem Komma einen Punkt zu machen und umgekehrt.
Folgendes Problem: Eine Anwendung mit wxPython als GUI. Die GUI nimmt Werte über Eingabefelder Werte entgegen. Die Eingabefelder geben aber immer einen String zurück. Da es viele Eingabefelder sind, benutze ich zum Auslesen der Werte eine Schleife, die über die Felder läuft. Somit kann ich nur unterscheiden, ob ich ein TextCrtl auslese oder ob es sich um eine CheckBox handelt. Innerhalb der TextCrtls kann ich [ich habe jedenfalls noch keinen Weg gefunden :( ] kann ich dann nicht mehr unterscheiden, ob hier ein String oder eine Zahl vorkommt:
<code> self.ctrlProperties = { 'descr': self.txtDescr, 'dim1': self.txtDim1, 'dim2': self.txtDim2, 'dim34formula': self.chkDim34Formula}
data = {} for key, value in self.ctrlProperties.iteritems(): #print key, value.GetValue(), type(value.GetValue()) if (isinstance(value.GetValue(), unicode)): val = value.GetValue().encode('utf-8') if (isinstance(value.GetValue(), bool)): if value.GetValue() == True: val = 1 else: val = 0 data[key] = val ret = self.bo.updateTool(data, self.toolId) </code>
dim1 und dim2 sind float, descr ist String, dim34formula ist eine Checkbox: also Integer.
Ich suche nun den Weg, die floats mit '.' als Dezimaltrenner zu versorgen, damit sie richtig in eine DB geschrieben werden können. Der Rückweg: DB float mit '.' ---> Anzeige in einem Textfeld mit ',' ist mir auch noch nicht ganz klar.
Eine einfache Lösung mit replace() gefällt mir nicht so richtig. Ich würde hier gern mit der LC_NUMERIC Funktionalität (format) arbeiten.
Wie behandelt ihr solche Umwandlungen?
Gruß Andreas
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

welche Strategien setzt ihr ein, um in floats aus dem Komma einen Punkt zu machen und umgekehrt.
---------
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')
'de_DE'
locale.ato
* <fun>atof(1-2) Parses a string as a float according to the locale settings. <fun>atoi(1) Converts a string to an integer according to the locale settings.
locale.atof("12,234")
12.234
locale.atof("12.234")
12234.0
-------
Ich suche nun den Weg, die floats mit '.' als Dezimaltrenner zu versorgen, damit sie richtig in eine DB geschrieben werden können.
Das hoert sich sehr falsch an. Wenn du die parametrisierte Variante von SQL-executes verwendest, dann gibst du ein float rein. Was man auch genau so tun sollte. Und nicht etwa irgendwelche SQL-Strings zusammenbosseln.
Der Rückweg: DB float mit '.' ---> Anzeige in einem Textfeld mit ',' ist mir auch noch nicht ganz klar.
locale.format("%f", 12.2345)
'12,234500'
MfG Diez
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (2)
-
Andreas Kaiser
-
Diez B. Roggisch