Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按字母顺序对CSV文件排序?_Python_Csv_Python 3.x - Fatal编程技术网

Python 如何按字母顺序对CSV文件排序?

Python 如何按字母顺序对CSV文件排序?,python,csv,python-3.x,Python,Csv,Python 3.x,这是我的代码,它将数据添加到名为studentScores.CSV的CSV文件中 myfile = open("studentScores.csv", "a+") newRecord = Score, Name, Gender, FormGroup, Percentage myfile.write(str(newRecord)) myfile.write("\n") myfile.close() 作为我任务的一部分,我需要按字母顺序排列CSV中的数据,我已经搜索了,并且搜索了一个解决方

这是我的代码,它将数据添加到名为studentScores.CSV的CSV文件中

myfile = open("studentScores.csv", "a+")

newRecord = Score, Name, Gender, FormGroup, Percentage

myfile.write(str(newRecord))

myfile.write("\n")

myfile.close()
作为我任务的一部分,我需要按字母顺序排列CSV中的数据,我已经搜索了,并且搜索了一个解决方案,但是我无法为我找到一个有效的解决方案。我对Python非常陌生,所以最好使用最简单的解决方案

import csv
from operator import itemgetter

with open('studentScores.csv', 'r') as f:
    data = [line for line in csv.reader(f)]

newRecord = [Score, Name, Gender, FormGroup, Percentage]
data.append(newRecord)

data.sort(key=itemgetter(1))  # 1 being the column number

with open('studentScores.csv', 'w') as f:
    csv.writer(f).writerows(data)
首先,它使用
csv
模块中的函数来正确解析和创建csv语法。其次,它将所有现有条目读入
数据
,追加新记录,对所有记录进行排序,然后将它们转储回文件


如果您在CSV文件中使用标题行向列添加名称,请查看,这将允许您按名称而不是编号处理列(例如,在排序步骤中)。

您需要将整个CSV文件读取到列表中,对其进行排序,然后将其写回文件中。您还应该使用
csv
模块。“我无法为我找到一个有效的解决方案”-然后写一个。@deceze有几个列和几个记录。我怎样才能把它写进一个列表而不让它乱序呢?此外,我将如何对其进行排序,我正在使用
csv
模块。它是在我的代码顶部导入的。@jonrsharpe我不知道如何导入,我的意思是,我在多个网站上搜索,没有足够清晰的解决方案来实现它。嗯,你已经导入了它,但你似乎没有使用它的任何函数来读取或写入CSV文件。。。!?我也不确定多个列会出现什么问题。
data.sort(key=itemgetter(1))#1是列号索引器:列表索引超出范围
我完全不知道这意味着什么……可能您的一行是空的/包含的项少于2项。排序前调试
print(data)
,查看您的所有行是否都有
1
索引。是的,似乎创建了一列,其中没有任何内容,如下所示:
[]
。我很惊讶从这里该怎么办,你的解决方案到目前为止都很有效,我只需要整理一下。我会继续努力的,谢谢你的帮助。