在下面的代码中,我需要从CSV文件"winners.csv“中打印出前5行,我不知道如何做到这一点。我只知道第4-5行会导致csv文件中的所有行都打印出来。
有关守则:
wins = open("winners.csv", "r")
csv1 = csv.reader(wins, delimiter=",")
sort = sorted(csv1,key=operator.itemgetter(1),reverse=True)
for eachline in sort:
print(eachline)
wins.close()发布于 2020-11-10 16:32:02
与其循环遍历sort中的所有元素,不如循环前五个元素。
wins = open("winners.csv", "r")
csv1 = csv.reader(wins, delimiter=",")
sort = sorted(csv1,key=operator.itemgetter(1),reverse=True)
for eachline in sort[:5]: # <----- note how sort is changed to sort[:5]
print(eachline)
wins.close()与你的问题没有直接关系,只是提到一个好的做法。建议使用with打开文件。异常处理、读取完成后关闭文件等操作将为您完成,您的代码将更加清晰。
with open("winners.csv", "r") as wins:
csv1 = csv.reader(wins, delimiter=",")
sort = sorted(csv1,key=operator.itemgetter(1),reverse=True)
for eachline in sort[:5]:
print(eachline)发布于 2020-11-10 16:32:25
enumerate函数允许您获得迭代器的值和索引。
因此,您可以检查打印了多少行并跳出循环:
with open('winners.csv', 'r') as f:
for index, line in enumerate(f):
print(line)
if index >= 5:
break发布于 2020-11-10 16:38:43
在这里,您可以使用切片和with (以确保文件流已经关闭):
import csv,operator
with open("winners.csv", "r") as wins:
csv1 = csv.reader(wins, delimiter=",")
sort = sorted(csv1,key=operator.itemgetter(1),reverse=True)
for eachline in sort[:5]:
print(eachline)使用pandas最简单
import pandas as pd
df = pd.read_csv('winners.csv').head(5)https://stackoverflow.com/questions/64772806
复制相似问题