2011-01-10 52 views

Trả lời

42

Nếu bạn muốn kết quả như dấu chấm động nhị phân số sử dụng gần float:

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

Nếu bạn muốn kết quả được lưu trữ một cách chính xác sử dụng Decimal thay vì float:

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

Đã kiểm tra điều này và nhận ra nó không ot làm việc vì các chuỗi có khoảng trắng và dấu trích dẫn thêm trong chúng. – Jake

+0

Cảm ơn, đã sửa. Nhân tiện, bạn cũng cần sửa chữa. –

+0

Đã thử nghiệm nó, hoạt động như cũ. – Jake

2

Bạn sẽ cần phải sử dụng strip() vì các bit phụ trong chuỗi.

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

Bạn cũng cần phải loại bỏ khoảng trống thừa. – DSM

+0

Thử nghiệm nó như hiện tại và nó hoạt động. – Jake

+2

Thử nghiệm với một cắt và dán ví dụ của OP? Nó không hoạt động như vậy. –

3

sử dụng hàm float() tích hợp trong danh sách hiểu.

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

1

A2 = [float(x.strip('"')) for x in A1] công trình, @Jake, nhưng có 0s không cần thiết

+2

Không hoạt động với ví dụ _exact_ của OP. Zeroes không phải là "không cần thiết". 'float' không thể đại diện cho tất cả các số thập phân chính xác trong nhị phân. Nhưng xem Mark Byers trả lời. –

+0

cảm ơn những người đứng đầu – tekknolagi

0

Nếu bạn đang chuyển đổi giá (trong chuỗi) giá số thập phân sau đó ....

from decimal import Decimal 

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

Nếu bạn đang chuyển đổi chuỗi thành phao:

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] 
Các vấn đề liên quan