2012-11-18 22 views
0

我在這裏有一個CSV文件:http://www.filedropper.com/excel看起來像這樣http://pastebin.com/ammzv4FK從CSV文件中提取項目並將元素放入列表

我想要做的是這樣的:

每年以與其對應的列,並在幾個月發現的數量和它們加總起來,並將其分配給變量。

所以第一年,2000年,單是這樣的:

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

然後,一旦我有一個名單,我可以將元素轉換從字符串到整數的列表,並使用心心他們()命令。

我可以打印出來行,但我在排除了數年,然後其餘的存入變量麻煩,因爲我的名單出來,因爲這:

['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

'csv'模塊是你想要的。另外,你應該在一個問題中顯示你當前的代碼。 –

+0

@syhpoon是的,如果我能夠讓他們進入自己的變量。 – Goose

+0

@Lattyware請參閱編輯。 – Goose

回答

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中的內置函數。

+0

我正在使用CSV模塊,但對於您的代碼,我得到的錯誤'地圖'對象不是可下載的。 – Goose

+0

哦,對,固定。 – Tim

+1

在python 3.x中,你可能會認爲''key,* values = list(map(int,row))''是更好的分割列表的方式。 –

相關問題