Я пишу код, который просматривал бы банковские выписки и совокупные расходы/доход в ведра в зависимости от месяца, в который они попадают. Данные находятся в форме csv и читаются как строковые записи. В файле csv есть 5 столбцов: столбец 1 для даты, 4 - для расходов и 5 для дохода.Python 3: Как суммировать результаты в словаре
Код должен:
- Посмотрите месяц в дате строки из CSV.
- Добавить расходы/доход в соответствующие словари.
Я попал в ловушку, пытаясь преобразовать расходы (формат: «$ 0.00») в поплавок и суммировать их в словарях. Кто-нибудь может сказать мне, что я могу здесь сделать?
Вот код:
import numpy as np
import csv
import timestring as ts
months= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
expenses = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0}
income = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0}
exp_cat = []
income_cat = []
files =['export.csv', 'export1.csv']
with open("budgetfile.csv","wt") as fw:
writer = csv.writer(fw)
for file in files:
with open(file) as csvfile:
records = csv.reader(csvfile, quoting=csv.QUOTE_NONE)
print("Processing file {}. \n" .format(file))
header = next(records)
for row in records:
try:
expenses[ts.Date(row[0]).month] += float(row[4])
income[ts.Date(row[0]).month] += float(row[5])
break
except ValueError:
pass
"Я ударил загвоздка". Пожалуйста, опишите более подробно проблему, которая у вас есть. Вызывает ли ваш код ошибку? Который? Где? –
НЕ используйте 'float' за деньги. Используйте 'Decimal' и удаляем' '' 'делаем это:' decimal.Decimal ('$ 33.50'.replace (' $ ',' ')) ' –
Уловка означает то, что я описал: невозможно суммировать столбец 4 в словаре , потому что строки не преобразуются в цифры. и никаких ошибок. Я новичок в программировании, чтобы нести со мной PLS ... – Chuck