【问题标题】:Converting csv columns to rows with python使用python将csv列转换为行
【发布时间】:2013-07-01 18:27:17
【问题描述】:

我正在尝试创建一个列表,该列表将从 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)

【问题讨论】:

  • 我不认为它是重复的。另一个问题涉及写入 csv 文件,而这个问题在将数据加载到列表时遇到了问题。
  • 我觉得这不仅仅是换位,因为我将一行转换为多个等级的多行。至少,这是我的目标。

标签: python sql csv import-from-csv


【解决方案1】:

看起来您为外部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)

【讨论】:

  • 这是我一见钟情的明显答案。
猜你喜欢
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
  • 2012-01-30
  • 2014-07-20
  • 2018-01-04
  • 2017-09-16
相关资源
最近更新 更多