使用python将csv列转换为行

2024-06-25 06:36:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在成绩册.csv包含与数据类似的列:

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

空单元格是没有提交的分配。带数字的单元格代表分数。此数据将进入以下格式的列表:

^{pr2}$

最终结果是将这些数据放入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)

Tags: csv数据in列表forsqlif格式
1条回答
网友
1楼 · 发布于 2024-06-25 06:36:22

看起来您为外部for循环的每次迭代清除everyone列表(通过设置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)

相关问题 更多 >