Domanda

Come posso analizzare un float scansionato da un foglio come testo, contenente virgole?

txt = "1,903.44"
value = float(txt) # This fails due to ',' in string

AGGIORNAMENTO: mi dispiace non sono stato chiaro. Sto usando jython 2.5, che non ha il modulo locale.

È stato utile?

Soluzione

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

Se hai bisogno di localizzazione, questo non funzionerà davvero, ma fa il trucco se sai che le virgole sono i tuoi separatori.

Altri suggerimenti

Usa locale.atof () dopo < code> locale.setlocale (locale.LC_ALL, '') .

È possibile rimuovere le virgole:

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

Userei personalmente il pacchetto decimale quando mi occupo di valori monetari per evitare insidie ??ben documentate che si verificano quando si utilizzano i punti mobili.

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

Come notato da altri poster, questo funziona solo se è noto che la tua locale usa ',' come separatore di migliaia, ma dovrebbe farti andare nella giusta direzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top