[Python] Operazioni con i numeri

Daniele Varrazzo piro a develer.com
Mar 7 Ott 2008 18:22:37 CEST


On Tue, 7 Oct 2008 12:09:55 -0400, "Antonio Cangiano" <acangiano a gmail.com>
wrote:
> On Tue, Oct 7, 2008 at 11:58 AM, Daniele Varrazzo <piro a develer.com>
wrote:
>> No, non lo è. Io di solito aggiro la cosa con:
>>
>> In [1]: s = "20,90"
>>
>> In [2]: print float(s.replace(",", "."))
>> 20.9
> 
> Occhio che gli ammerregani usano la virgola per separare gruppi di cifre:
> 
>>>> s = "10,239.59"
>>>> print float(s.replace(",","."))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> ValueError: invalid literal for float(): 10.239.59

Ipotizzo che l'OP usi un computer italiano (con sopra installato windows) e
debba parsare numeri emessi da un programma su tale piattaforma. Ipotizzo
anche che non ci sia un separatore decimale, che in Italia è il punto,
perché anche in questo caso ("12.345,67") la mia ricetta fallirebbe.

Ovviamente è banale risolvere il problema:

    In [3]: s = "12.345,67"

    In [4]: print float(s.replace(".","").replace(",", "."))
    12345.67

ma è scontato (e ora lo splicito anche) che funziona solo se si sa quale
formato si sta convertendo, non se lo si applica a una stringa dalla
formattazione sconosciuta.

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python