2009-04-30 6 views

Répondre

3
txt = "1,903.44" 
value = float(txt.replace(',', '')) 

Si vous avez besoin de localisation, ce ne sera pas vraiment travailler, mais il fait le tour si vous savez que des virgules sont vos séparateurs.

+0

Cela fonctionne le plus facile, étant donné que je n'ai pas le module de paramètres régionaux. Merci! – gregturn

3

Utilisez locale.atof() après locale.setlocale(locale.LC_ALL, '').

+0

+1 Je voulais juste ajouter que si le PO traite des valeurs monétaires, il peut être plus judicieux d'utiliser le paquet décimal au lieu de virgule flottante. http://stackoverflow.com/questions/723356/when-is-it-appropriate-to-use-floating-precision-data-types –

+0

Vous avez raison, c'est pour l'analyse d'une facture pour obtenir un montant . – gregturn

+0

Vous pouvez utiliser locale.localeconv() ['milliers_sep'] pour obtenir le caractère séparateur d'une version locale de l'idée de remplacement. Sauf en Jython, apparemment. –

3

Vous pouvez dépouiller les virgules:

txt = txt.replace(',', '') 
value = float(txt) 
0

Personnellement, j'utiliser le package décimal lorsque des valeurs monétaires pour éviter well-documented pitfalls qui se produisent lors de l'utilisation des points flottants.

from decimal import Decimal 
txt = txt.replace (',', '') 
value = Decimal(txt) 

Comme indiqué par d'autres affiches, cela ne fonctionne que si votre locale est connue pour utiliser « » comme séparateur de milliers, mais vous devriez aller dans la bonne direction.

Questions connexes