#python #string #floating-point
Вопрос:
Я пытаюсь преобразовать этот список чисел (которые являются строками) в поплавки, чтобы я мог провести с ними анализ. Однако я получаю ошибку при попытке преобразовать их в плавающие.
Это список:
temp_gallons = [‘404,443.60 ‘, ‘367,223.12 ‘, ‘388,369.08 ‘, ‘352,472.56 ‘, ‘386,618.76 ‘, ‘333,929.64 ‘, ‘326,868.52 ‘, ‘257,663.56 ‘, ‘0.00 ‘, ‘0.00 ‘, ‘0.00 ‘, ‘0.00 ‘, ‘2,817,589 ‘]
Это итерация цикла for для добавления их при временном преобразовании в float:
Q1_Gallons = 0.0
for i in range(0,2):
Q1_Gallons = Q1_Gallons float(temp_gallons[i])
Я решил, что причина в том, что в конце каждого числа есть пробел. Поэтому я попытался удалить значения, используя итерацию цикла for:
for i in temp_gallons:
i.strip(" ")
Однако список остается прежним после полосы, и я все еще не могу преобразовать строку в плавающую и/или добавить числа.
Просто для контекста: это значения за каждый месяц, и я провожу ежеквартальный анализ сбережений, добавляя значения за первые три месяца, следующие три и так далее.
Комментарии:
1. Строки должны содержать только «.» и только один раз. Ваш содержит «,»
2. Пробел не проблема, вы можете иметь столько пробелов, сколько захотите, в начале и в конце строки:
float(' t 404443.60 n ')
равно404443.6
.
Ответ №1:
Причина не в конечных пробелах, а ,
в промежутках между ними.
Вы должны удалить ,
из строк, а затем преобразовать в float
.
Вот как это сделать.
temp_gallons = ['404,443.60 ', '367,223.12 ', '388,369.08 ', '352,472.56 ', '386,618.76 ', '333,929.64 ', '326,868.52 ', '257,663.56 ', '0.00 ', '0.00 ', '0.00 ', '0.00 ', '2,817,589 ']
temp_gallons = [float(x.replace(',', '')) for x in temp_gallons]
print(temp_gallons)
[404443.6, 367223.12, 388369.08, 352472.56, 386618.76, 333929.64, 326868.52, 257663.56, 0.0, 0.0, 0.0, 0.0, 2817589.0]
Комментарии:
1. Спасибо!! это сработало. Пришлось немного изменить его для моего другого списка кортежей, но алгоритм был идеальным, еще раз спасибо.
Ответ №2:
Во-первых, вы получаете ошибки, потому что в строке есть запятая. Float не может преобразовать запятую в плавающее число. Во-вторых, пространство-это не проблема. Предположим, у вас есть две строки S1 = ‘123,00 ‘(есть пробел), S2 = ‘12,324324’ (есть запятая) . Вы можете использовать float() для преобразования S1 в float, но не можете использовать float() для S2, потому что там есть»,». Сначала вы должны удалить его. Проверьте код:
temp_gallons = ['404,443.60 ', '367,223.12 ', '388,369.08 ', '352,472.56 ', '386,618.76 ',
'333,929.64 ', '326,868.52 ', '257,663.56 ', '0.00 ', '0.00 ', '0.00 ', '0.00 ', '2,817,589 ']
temp_gallons_float = []
for i in temp_gallons:
i = i.replace(',', '')
i = float(i)
temp_gallons_float.append(i)
print(temp_gallons_float)
# for adding
Q1_Gallons = 0.0
for i in temp_gallons_float:
Q1_Gallons = i
print(Q1_Gallons)