2013-07-03 4 views
0

gradebook.csv에서 데이터를 가져 와서 다른 형식으로 변경하는 목록을 만들려고합니다.파이썬으로 csv 열을 행으로 변환

gradebook.csv 데이터와 같은 열이 있습니다

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

빈 셀없이 제출에 할당됩니다. 숫자가있는 셀은 성적을 나타냅니다. 최종 결과는 SQL 서버 2012 아래의 코드에서 SQL 테이블에 데이터를 넣는 것

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

것은 내가 원하는 것을,하지만 마지막 행에 대한 :이 데이터는 형식의리스트로 이동합니다 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-csv-file) – abarnert

+0

나는 그것이 중복이라고 생각하지 않는다. 다른 질문은 csv 파일에 쓰는 것이었지만이 질문에는 데이터를 목록에로드하는 데 문제가있었습니다. – jh314

+0

한 행을 가져 와서 여러 개의 행으로 여러 등급으로 바꾸기 때문에 이것은 단순히 전치하는 것 이상의 의미를가집니다. 적어도 그것은 내 목표 다. – mnky9800n

답변

3

그것은 당신처럼 everyone 목록 밖으로 당신의 외부 for 루프의 각 반복에 대해 (everyone=[] 설정하여) 분명히 보인다. 그러면 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) 
[파이썬, 목록을 전치하고 CSV 파일에 쓰기] (의
+0

이것은 내가 놓친 분명한 대답이었습니다. – mnky9800n