读取csv文件的指定行 python3

python读取csv文件的指定行

  csv文件是用文本文件形式储存的表格数据。

  提取文件数据指定的行,或者指定行里某一项数据是经常需要用到的。python有专门处理csv文件的模块,根据返回的类型,可以分为两类:

一,使用reader函数,返回一个生成器,类型为列表:

 

import csv
try:
  #取别名,并且自动关闭文件
 with open('hs300_399300.csv', 'r') as db01:
    #返回一个生成器对象,reader是可迭代的
    reader = csv.reader(db01)
    for row in reader:
      print(row)
#捕捉异常本身,打印异常信息
except csv.Error as e:
  print("Error at line %s :%s", reader.line_num, e)

安全问题不能上传任何数据,运行结果以后补充


对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate内置函数可将其组成一个索引序列,利用它可以同时获得索引和值。

要提取其中第7行:

  reader = csv.reader(db01)
    for index, rows in enumerate(reader):
      if index == 7:
        row = rows
  print(row)


读取指定列:

  reader = csv.reader(db01)
  column = [row[2] for row in reader]
print (column)


二、使用DictReader,和reader类似,区别在于返回的每一个数据文件单元格都放在一个字典的值内,字典的键则是这个单元格的标题,而且是有序字典(OrderedDict)


import csv
with open('hs300_399300.csv', 'r') as db01:
    #返回一个生成器对象,reader是有序字典
    reader = csv.DictReader(db01)
    for row in reader:
        print(row)

用DictReader读取csv的某一列,就可以用列的标题查询:


import csv
with open('hs300_399300.csv', 'r') as db01:
    #返回一个生成器对象,reader是有序字典
    reader = csv.DictReader(db01)
    for row in reader:
        if row['收盘价'] =='1292.71'
       print(row)
手打一下结果:

OrderedDict([('日期', '2002-01-08'), ('股票代码'," '399300"), .....])


  reader = csv.DictReader(db01)
  column = [row['收盘价'] for row in reader]
print column


版权声明:本文为AlexMerer原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。