import csv
sales = []
with open('sales.csv') as f:
reader = csv.DictReader(f)
for row in reader:
val = float(row['sales']) # convert to a number; use int() if you don't have decimals
sales.append(val)
print(sum(sales))
import csv
import decimal # You should generally use decimal instead of float for currency
sales_records = []
with open('sales.csv') as sales_file:
sales_reader = csv.DictReader(sales_file)
for row in sales_reader:
typed_record = {
'label': row['label'], # for example
'sales': int(row['sales']),
'price': decimal.Decimal(row['price']), # for example
}
sales_records.append(typed_record)
sales_total = sum([record['sales'] for record in sales_records])
price_total = sum([record['price'] for record in sales_records])
2条答案
按热度按时间uqxowvwt1#
对于这种类型的工作,我建议使用
pandas
,但是yhxst69z2#
我建议您考虑将所有数据类型转换作为一个步骤,然后处理数据:
更新:添加以下逐行细分:
导入一些我们需要的包:
创建一个空列表来保存我们的记录:
使用“上下文管理器”打开文件,以确保当我们完成它时它是关闭的(这对我们的计算机和程序的其余部分很好)
创建一个csv阅读器,它将文件中的行作为字典而不是一个长字符串:
遍历文件的行字典,一次一个:
为每一行创建一个新的字典(称为typed_record)
在我们的行中取一个名为“label”的列,并将其直接放入新字典:
在我们的行中取一个名为“sales”的列,将其转换为int并将其放入新字典中:
在我们的行中取一个名为“price”的列,将其转换为Decimal并将其放入新字典中:
将新字典添加到我们的所有记录列表中:
最后两行,一次做两件事:
首先,将字典记录列表转换为只有一个值的列表(这在Python中称为“列表解析”,是一个非常强大的工具:
然后,我们总结所有这些值: