Python 按数值对CSV文件排序
所以对于家庭作业任务,我必须制作一个程序,像一个排行榜一样对分数进行排序,我不知道如何按降序排序 我将发送我的代码的其余部分,如果这有帮助,任何帮助将不胜感激 忘了提及CSV文件的外观如下: 姓名、分数 我在这里看到了很多关于这方面的问题,但似乎没有一个与我的问题相符Python 按数值对CSV文件排序,python,csv,sorting,operator-keyword,Python,Csv,Sorting,Operator Keyword,所以对于家庭作业任务,我必须制作一个程序,像一个排行榜一样对分数进行排序,我不知道如何按降序排序 我将发送我的代码的其余部分,如果这有帮助,任何帮助将不胜感激 忘了提及CSV文件的外观如下: 姓名、分数 我在这里看到了很多关于这方面的问题,但似乎没有一个与我的问题相符 with open('names.csv', 'a', newline='') as names: csvWriter = csv.writer(names) csvWriter.writerow([name, i
with open('names.csv', 'a', newline='') as names:
csvWriter = csv.writer(names)
csvWriter.writerow([name, int(score)])
with open('names.csv', 'r') as names:
csvReader = csv.reader(names)
csv1 = csv.reader(names, delimiter='.')
sort = sorted(csv1, key=operator.itemgetter(0))
csv_writer = csv.writer(names, delimiter='.')
for name in csvReader:
print(' '.join(name))
没有错误消息或结果,只有一个退出代码请参见此处,以将csv读取到数据帧中 这里是分类的地方
有关将csv读入数据帧的信息,请参见此处 这里是分类的地方
这里的代码有一些问题,我将尝试将其分解。。我不建议你现在就跳到熊猫队。我假设这实际上是在写数据。。但是您应该检查“names.csv”以确保它不是空的。看起来这只会写一行。我也不知道为什么要设置
newline='
,我可能不会在这里这样做。。虽然我不确定这对csv.writer是否重要
with open('names.csv', 'a', newline='') as names:
csvWriter = csv.writer(names)
csvWriter.writerow([name, int(score)])
通常在语句中会有一个循环,如下所示:
my_list = [("Bob", "2"), ("Alice", "1")]
with open('names.csv', 'a') as names:
csvWriter = csv.writer(names)
for name, score in my_list:
csvWriter.writerow([name, int(score)])
您在这里创建了两个csv阅读器。。我不知道为什么。第二个使用“.”作为分隔符。。您在编写csv时没有指定分隔符,因此它实际上会有一个标准分隔符,它是一个逗号“,”<默认情况下,code>csvReader将使用此选项,但csv1
将尝试按时段分割,但效果不佳
with open('names.csv', 'r') as names:
csvReader = csv.reader(names)
csv1 = csv.reader(names, delimiter='.')
您不应该使用“sort”作为变量名。。这是一个常用方法的名称。但这实际上不会破坏这里的任何东西。。您创建了一个新的排序版本的csv1
,但实际上是在csvReader
上运行for循环,自从您在上面设置它以来,该循环一直没有改变。您还可以创建csv\u writer
withnames
with,该writer是开放的,可供阅读,而非书写。但你无论如何都不用它。
itemgetter
正在查看索引0
,该索引将是您的作者的姓名。。如果要按分数排序,请使用1
sort = sorted(csv1, key=operator.itemgetter(0))
csv_writer = csv.writer(names, delimiter='.')
for name in csvReader:
print(' '.join(name))
我想这可能是你想要的。。用我的示例列表
#!/usr/bin/env python3
import csv
import operator
my_list = [("Bob", "2"), ("Alice", "1")]
with open('names.csv', 'a') as names:
csvWriter = csv.writer(names)
for name, score in my_list:
csvWriter.writerow([name, int(score)])
with open('names.csv', 'r') as names:
csvReader = csv.reader(names)
sorted_reader = sorted(csvReader, key=operator.itemgetter(1))
for name, score in sorted_reader:
print(name, score)
输出:
Alice 1
Bob 2
既然你想让它看起来“像一个排行榜”,你可能会想要一个不同的排序。。您希望将其反转,并实际使用score列的整数值(例如,100将出现在2的上方)
这里的代码有一些问题,我将尝试将其分解。。我不建议你现在就跳到熊猫队。我假设这实际上是在写数据。。但是您应该检查“names.csv”以确保它不是空的。看起来这只会写一行。我也不知道为什么要设置
newline='
,我可能不会在这里这样做。。虽然我不确定这对csv.writer是否重要
with open('names.csv', 'a', newline='') as names:
csvWriter = csv.writer(names)
csvWriter.writerow([name, int(score)])
通常在语句中会有一个循环,如下所示:
my_list = [("Bob", "2"), ("Alice", "1")]
with open('names.csv', 'a') as names:
csvWriter = csv.writer(names)
for name, score in my_list:
csvWriter.writerow([name, int(score)])
您在这里创建了两个csv阅读器。。我不知道为什么。第二个使用“.”作为分隔符。。您在编写csv时没有指定分隔符,因此它实际上会有一个标准分隔符,它是一个逗号“,”<默认情况下,code>csvReader将使用此选项,但csv1
将尝试按时段分割,但效果不佳
with open('names.csv', 'r') as names:
csvReader = csv.reader(names)
csv1 = csv.reader(names, delimiter='.')
您不应该使用“sort”作为变量名。。这是一个常用方法的名称。但这实际上不会破坏这里的任何东西。。您创建了一个新的排序版本的csv1
,但实际上是在csvReader
上运行for循环,自从您在上面设置它以来,该循环一直没有改变。您还可以创建csv\u writer
withnames
with,该writer是开放的,可供阅读,而非书写。但你无论如何都不用它。
itemgetter
正在查看索引0
,该索引将是您的作者的姓名。。如果要按分数排序,请使用1
sort = sorted(csv1, key=operator.itemgetter(0))
csv_writer = csv.writer(names, delimiter='.')
for name in csvReader:
print(' '.join(name))
我想这可能是你想要的。。用我的示例列表
#!/usr/bin/env python3
import csv
import operator
my_list = [("Bob", "2"), ("Alice", "1")]
with open('names.csv', 'a') as names:
csvWriter = csv.writer(names)
for name, score in my_list:
csvWriter.writerow([name, int(score)])
with open('names.csv', 'r') as names:
csvReader = csv.reader(names)
sorted_reader = sorted(csvReader, key=operator.itemgetter(1))
for name, score in sorted_reader:
print(name, score)
输出:
Alice 1
Bob 2
既然你想让它看起来“像一个排行榜”,你可能会想要一个不同的排序。。您希望将其反转,并实际使用score列的整数值(例如,100将出现在2的上方)
使用熊猫图书馆。如果你做不到,那就意味着你必须学会如何做,而不是让别人帮你做,因为正如你所说,这是家庭作业。提示:阅读csv文件,制作一个以名称为键、分数为值的字典,并学习如何用python对字典进行排序。使用pandas库。如果你做不到,那就意味着你必须学会如何做,而不是让别人帮你做,因为正如你所说,这是家庭作业。提示:阅读csv文件,制作一个以名称为键、分数为值的字典,并学习如何用python对字典进行排序。