使用python将csv列转换为行

使用python将csv列转换为行,python,sql,csv,import-from-csv,Python,Sql,Csv,Import From Csv,我正在尝试创建一个列表,该列表将从gradebook.csv获取数据,并将其更改为其他格式 gradebook.csv有如下列,其中包含数据: { studentID , assignment1 , assignment2 , . . . assignmentN } { 2343 , , 34.2 , } 空单元格是没有提交的作业。带有数字的单元格表示等级。这些数据将进入以下格式的列表: { studentID

我正在尝试创建一个列表,该列表将从
gradebook.csv
获取数据,并将其更改为其他格式

gradebook.csv有如下列,其中包含数据:

{ studentID , assignment1 , assignment2 , . . . assignmentN }
{ 2343      ,             ,   34.2      ,                   }
空单元格是没有提交的作业。带有数字的单元格表示等级。这些数据将进入以下格式的列表:

{ studentID , assignmentid , grade }
{ 2343      , assignment2  , 34.2  }
最终结果将是将这些数据放入sql server 2012中的sql表中。下面的代码符合我的要求,但仅适用于
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)

对于外部
for
循环的每一次迭代,您似乎都清除了
所有人
列表(通过设置
所有人=[]
)。因此,只有csv文件中的最后一行才会出现在列表中

要修复此问题,您需要在循环之外声明
所有人

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)

对于外部
for
循环的每一次迭代,您似乎都清除了
所有人
列表(通过设置
所有人=[]
)。因此,只有csv文件中的最后一行才会出现在列表中

要修复此问题,您需要在循环之外声明
所有人

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文件,而这个问题在将数据加载到列表中时遇到了问题。我觉得这不仅仅是换位,因为我将一行数据转换为多个等级的多行数据。至少,这是我的目标。可能的复制我不认为它是复制品。另一个问题涉及到写入csv文件,而这个问题在将数据加载到列表中时遇到了问题。我觉得这不仅仅是换位,因为我将一行数据转换为多个等级的多行数据。至少,这是我的目标。这是我一目了然错过的答案。这是我一目了然错过的答案。