1. 程式人生 > >讀取csv檔案的指定行 python3

讀取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