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