2013-07-03 97 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