首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打印排序csv文件的前5行?

如何打印排序csv文件的前5行?
EN

Stack Overflow用户
提问于 2020-11-10 16:28:45
回答 3查看 735关注 0票数 0

在下面的代码中,我需要从CSV文件"winners.csv“中打印出前5行,我不知道如何做到这一点。我只知道第4-5行会导致csv文件中的所有行都打印出来。

有关守则:

代码语言:javascript
复制
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()
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-11-10 16:32:02

与其循环遍历sort中的所有元素,不如循环前五个元素。

代码语言:javascript
复制
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打开文件。异常处理、读取完成后关闭文件等操作将为您完成,您的代码将更加清晰。

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2020-11-10 16:32:25

enumerate函数允许您获得迭代器的值和索引。

因此,您可以检查打印了多少行并跳出循环:

代码语言:javascript
复制
with open('winners.csv', 'r') as f:
    for index, line in enumerate(f):
        print(line)
        if index >= 5:
            break
票数 0
EN

Stack Overflow用户

发布于 2020-11-10 16:38:43

在这里,您可以使用切片和with (以确保文件流已经关闭):

代码语言:javascript
复制
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最简单

代码语言:javascript
复制
import pandas as pd
df = pd.read_csv('winners.csv').head(5)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64772806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档