讀取csv檔案的指定行 python3
阿新 • • 發佈:2019-01-01
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