2011-01-10 21 views

Odpowiedz

42

Jeśli chcesz wynik jako najbliższej liczby binarne zmiennoprzecinkowe użytku float:

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

Jeśli chcesz wynik zapisany dokładnie użyć Decimal zamiast float:

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

Przetestowałem to i zrealizowałem pracy, ponieważ łańcuchy mają białe spacje i dodatkowe znaki cudzysłowu. – Jake

+0

Dzięki, naprawione. Przy okazji, twój też potrzebuje korekty. –

+0

Testowany, działa jak jest. – Jake

2

Musisz użyj strip() ze względu na dodatkowe bity w łańcuchach.

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

Należy również usunąć dodatkową przestrzeń. – DSM

+0

Przetestowałem to tak jak jest i działa. – Jake

+2

Przetestowano za pomocą wycinania i wklejania przykładu OP? To nie działa tak jak jest. –

3

użyć wbudowanej funkcji float() w zrozumieniu listy.

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

1

A2 = [float(x.strip('"')) for x in A1] prace, @Jake, ale są zbędne 0s

+2

Nie działa z przykładem _exact_ OP. Zero nie jest "niepotrzebne". 'float' nie może przedstawiać wszystkich liczb dziesiętnych dokładnie w systemie binarnym. Ale zobacz odpowiedź Marka Byersa. –

+0

dzięki za heads up – tekknolagi

0

Jeśli konwersja cenę (w ciągu) do ceny dziesiętnych ówczesnego ....

from decimal import Decimal 

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

Jeśli konwertują ciąg do 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] 
Powiązane problemy