2013-07-03 98 views
0

我試圖創建一個將從gradebook.csv獲取數據並將其更改爲不同格式的列表。使用python將csv列轉換爲行

gradebook.csv具有柱像數據:

{ studentID , assignment1 , assignment2 , . . . assignmentN } 
{ 2343  ,    , 34.2  ,     } 

空單元格都沒有提交作業。帶數字的單元表示等級。這些數據將進入格式的列表:

{ studentID , assignmentid , grade } 
{ 2343  , assignment2 , 34.2 } 

的最終結果將是把這個數據到一個SQL表中的SQL Server 2012下面的代碼我想要做什麼,但只在最後一排gradebook.csv。我究竟做錯了什麼?

import csv 

with open('gradebook.csv','rb') as g: 
     gr=csv.reader(g) 
     for row in gr: 
      if row[0]=='User ID': 
       pass 
      else: 
       studentid=row[0] 
       individualassignments=[] 
       everyone=[] 
       for element in row[1:]: 
        if element=='': 
         pass 
        else: 
         individualassignments.append(element) 

       individualassignments.append(studentid) 
       everyone.append(individualassignments) 
+0

可能重複http://stackoverflow.com/questions/10573915/python-transposing-a-list-and-writing-to-a-csv-file) – abarnert

+0

我不認爲它是重複的。另一個問題涉及寫入一個csv文件,而這個問題有一個將數據加載到列表中的問題。 – jh314

+0

我覺得這不僅僅是移調,因爲我正在排成一排,並將它變成多個等級的多行。至少,這是我的目標。 – mnky9800n

回答

3

看起來你清楚了everyone名單(通過設置everyone=[])爲您的外for循環的每個迭代。所以只有你的csv文件中的最後一行會在列表中。

要解決,你需要聲明everyone外循環

import csv 

with open('gradebook.csv','rb') as g: 
    gr=csv.reader(g) 
    everyone=[] # declare everyone here 
    for row in gr: 
     if row[0]=='User ID': 
      pass 
     else: 
      studentid=row[0] 
      individualassignments=[]    
      for element in row[1:]: 
       if element=='': 
        pass 
       else: 
        individualassignments.append(element) 

      individualassignments.append(studentid) 
      everyone.append(individualassignments) 
[Python中,換位列表,並寫入到一個CSV文件(的
+0

這是我錯過了明顯的答案。 – mnky9800n