【发布时间】:2016-01-15 07:24:03
【问题描述】:
我正在编写一个程序,该程序从 csv 文件中获取学生的分数,然后需要对分数从高到低进行排序。 csv 文件如下所示:
乔希 12
约翰 6
弗雷德 8
哈利 7
我尝试将这些项目放在这样的列表中:
Mylist=[]
csvfile = open (classname,'r')
reader = csv.reader(csvfile)
for row in reader:
Mylist.append(row)
然后反转列表以将数值放在第一位:
Mynewlist = []
for each in Mylist:
value2 = ''.join(each[0])
value1 = ''.join(each[1])
mynewlist.append(value1,value2)
没有运气,我得到了这个错误:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
main()
File "\\SRV-FILE3\ca231$\task 3\3.py", line 143, in main
value1 = ''.join(each[1])
IndexError: list index out of range
我使用''.join(each[1]) 转换为字符串,然后以相反的顺序附加它们,然后我计划使用.sort() 对它们进行数字排序,但我无法将它们附加到列表中。
有人知道如何按数值对 csv 文件的内容进行排序吗?
【问题讨论】:
-
建议大家看看pandas库pandas.pydata.org
-
我猜你最好使用字典而不是列表
-
@skywavemedia 你的程序有很多问题首先正确缩进它 secong 列表索引从 0 而不是 1 开始,你在哪里排序
-
@VigneshKalai 感谢我在这里错误地输入了 1 和 2,缩进似乎也可以正常工作
-
@skywavemedia 乐于帮助我说的是缩进,而不是你的程序。所以如果输入 0 和 1 并且索引超出范围错误,我认为你没有两个元素在你的 csv 文件中检查完整的 csv
标签: python list sorting csv numerical