仅打印.csv文件中的最后8个条目

我有一个输入的csv文件,如下,我只想打印最新的8个条目。.任何人都可以提供有关如何执行此操作的输入吗?


INPUT:-

trend.csv


['2013-06-25 20:01', '10']

['2013-06-25 20:06', '9']

['2013-06-25 20:06', '8']

['2013-06-26 20:06', '7']

['2013-06-26 20:06', '6']

['2013-06-26 20:06', '5']

['2013-06-26 20:06', '4']

['2013-06-26 20:06', '3']

['2013-06-26 20:06', '2']

['2013-06-26 20:08', '1']


OUTPUT:-

['2013-06-25 20:06', '8']

['2013-06-26 20:06', '7']

['2013-06-26 20:06', '6']

['2013-06-26 20:06', '5']

['2013-06-26 20:06', '4']

['2013-06-26 20:06', '3']

['2013-06-26 20:06', '2']

['2013-06-26 20:08', '1']

代码:


import csv

#Now read the recent 8 entries and print

cr = csv.reader(open("trend.csv","rb"))


for row in cr:  

    #print only the recent most 8 entries

    print row


繁花不似锦
浏览 139回答 3
3回答

米琪卡哇伊

您可以将尾部配方与n = 8的双端队列配合使用。这将创建一个双头队列,在该队列中,将一个项目添加到末尾(右侧)将有效地从开头(左侧)弹出一个项目,以使长度不超过最大长度:>>> from collections import deque>>> deque(range(10000),8)deque([9992, 9993, 9994, 9995, 9996, 9997, 9998, 9999], maxlen=8)所述csv.reader对象是一个迭代。将有限长度的双端队列应用到csv阅读器,您就可以开始了:import csvfrom collections import dequewith open('/tmp/trend.csv','rb') as fin:    deq=deque(csv.reader(fin),8)for sub_list in deq:    print sub_list以您的10行示例为例,将输出:['2013-06-25 20:06', '8']['2013-06-26 20:06', '7']['2013-06-26 20:06', '6']['2013-06-26 20:06', '5']['2013-06-26 20:06', '4']['2013-06-26 20:06', '3']['2013-06-26 20:06', '2']['2013-06-26 20:08', '1']

婷婷同学_

import csv# Open the file with a "with" statement to provide automatic cleanup# in case of exceptions.with open("trend.csv","rb") as file:    cr = csv.reader(file)    lines = [row for row in cr]# Use slice notation and the wonderful fact that python treats# negative indices intelligently!for line in lines[-8:]:    print line

缥缈止盈

如果内存/性能不是问题,则可以执行以下操作:for row in list(cr)[-8:]:      print row
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python