2011-01-10 12 views

risposta

42

Se si desidera che il risultato come il numero binario in virgola mobile uso più vicino float:

result = [float(x.strip(' "')) for x in A1] 

Se si desidera che il risultato memorizzato esattamente utilizzare Decimal invece di float:

from decimal import Decimal 
result = [Decimal(x.strip(' "')) for x in A1] 
+0

Testato questo e realizzato lo fa n lavoro perché le stringhe hanno spazi bianchi e segni di virgoletta extra in loro. – Jake

+0

Grazie, risolto. A proposito, anche il tuo ha bisogno di essere corretto. –

+0

Testato, funziona così com'è. – Jake

2

Sarà necessario utilizzare strip() a causa dei bit aggiuntivi nelle stringhe.

A2 = [float(x.strip('"')) for x in A1] 
+4

È necessario rimuovere anche lo spazio extra. – DSM

+0

Testato così com'è e funziona. – Jake

+2

Testato con un copia-incolla dell'esempio dell'OP? Non ha funzionato così com'è. –

3

utilizzare la funzione built-in float() in una lista di comprensione.

A2 = [float(v.replace('"','').strip()) for v in A1]

1

A2 = [float(x.strip('"')) for x in A1] opere, @Jake, ma ci sono 0s inutili

+2

Non funziona con l'esempio _exact_ dell'OP. Gli zeri non sono "non necessari". 'float' non può rappresentare tutti i decimali esattamente in binario. Ma vedi la risposta di Mark Byers. –

+0

grazie per l'heads up – tekknolagi

0

Se si sta convertendo prezzo (in string) al prezzo decimale poi ....

from decimal import Decimal 

price = "14000,45" 
price_in_decimal = Decimal(price.replace(',','')) 
0

Se stai convertendo la stringa in float:

import re 
A1 = [' "29.0" ',' "65.2" ',' "75.2" '] 
float_values = [float(re.search(r'\d+.\d+',number).group()) for number in A1] 
print(float_values) 
>>> [29.0, 65.2, 75.2] 
Problemi correlati