从CSV文件中取出项目并将元素放入列表中

时间:2012-11-18 01:15:54

标签: python list csv

我在这里有一个CSV文件:http://www.filedropper.com/excel,看起来像http://pastebin.com/ammzv4FK

我想做的是:

每年使用相应的行,找到以月为单位的数字并将它们合计,并将它们分配给变量。

所以2000年的第一年,名单看起来像这样:

year2000 = ['14744', '2947', '14905', '1748',  '2859',  '11778', '1453',  '5255', '14806', '1858', '10763', '6000']

然后,一旦我有了这个列表,我可以将列表中的元素从字符串转换为整数,并使用sum()命令对它们求和。

我可以打印出行但是我在排除年份数字时遇到了问题,然后将其余部分存储到变量中,因为我的列表是这样的:

['2000, 14744, 2947, 14905, 1748,  2859,  11778, 1453,  5255, 14806, 1858, 10763, 6000']

作为一个大字符串,而不是单个元素,我的列表一次打印出所有年份,所以我似乎无法弄清楚如何将它们存储到变量中并将它们分开计算。

这是我的代码:

with open("file.csv","r") as f:
    for i in range(1): 
        next(f)
    for x in f:
        x=x.split()
        print (x)

但是当print(x)运行时,它会全部打印出来,如何将每年的内容存储在一个变量中,同时排除实际的年份数?

我正在使用Python 3,谢谢。

1 个答案:

答案 0 :(得分:1)

如果您正在获得这样的行,您可能没有使用csv阅读器。您应该使用csv模块并将每行存储在dict中,并将年份作为键。这仅适用于您的数据由整数组成的情况。

data = {}

with open("data.csv") as f:
    reader = csv.reader(f, delimiter="\t")
    reader.next() # Skip header
    for row in reader:
        row = list(map(int, row))
        data[row[0]] = row[1:]

要获得总和,请使用内置的sum函数。