Python: преобразование строки в десятичное число - PullRequest
21 голосов
/ 10 января 2011

У меня есть список python со строками в этом формате:

A1 = [' "29.0" ',' "65.2" ',' "75.2" ']

Как преобразовать эти строки в десятичные числа для выполнения арифметических операций над элементами списка?

Ответы [ 6 ]

51 голосов
/ 10 января 2011

Если вы хотите получить результат в качестве ближайшего двоичного числа с плавающей запятой, используйте float:

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

Если вы хотите, чтобы результат сохранялся в точности, используйте Decimal вместо float:

from decimal import Decimal
result = [Decimal(x.strip(' "')) for x in A1]
3 голосов
/ 26 декабря 2017

Если вы конвертируете цену (в строке) в десятичную цену, тогда ....

from decimal import Decimal

price = "14000,45"
price_in_decimal = Decimal(price.replace(',',''))
3 голосов
/ 10 января 2011

использовать встроенную функцию float () в понимании списка.

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

3 голосов
/ 10 января 2011

Вам нужно будет использовать strip() из-за лишних битов в строках.

A2 = [float(x.strip('"')) for x in A1]
1 голос
/ 10 января 2011

A2 = [float(x.strip('"')) for x in A1] работает, @ Джейк, но есть лишние 0с

0 голосов
/ 26 декабря 2017

Если вы конвертируете строку в число с плавающей точкой:

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]
...