1. 程式人生 > >python3讀寫csv格式檔案

python3讀寫csv格式檔案

什麼是csv格式

逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其檔案以純文字形式儲存表格資料(數字和文字)。

CSV檔案由任意數目的記錄組成,記錄間以某種換行符分隔;

每條記錄由欄位組成,欄位間的分隔符是其它字元或字串,最常見的是逗號或製表符。

所有記錄都有完全相同的欄位序列,通常都是純文字檔案。

建議用nodepad++、sublime等編輯器進行編輯。

csv格式規則

  1. 開頭是不留空,以行為單位。

  2. 可含或不含列名,含列名則居檔案第一行。

  3. 一行資料不跨行,無空行。

  4. 以半形逗號(即,)作分隔符,列為空也要表達其存在。

  5. 列內容如存在半形引號(即"),替換成半形雙引號("")轉義,即用半形引號(即"")將該欄位值包含起來。

  6. 檔案讀寫時引號,逗號操作規則互逆。

  7. 內碼格式不限,可為 ASCII、Unicode 或者其他。

  8. 不支援特殊字元

Python csv模組

csv模式是python內建的標準模組,用於讀寫csv格式的檔案。

在csv模組中提供了reader、writer來讀寫csv格式的檔案,下面我們一起看下這個兩個函式使用示例。

示例功能:

  1. 先使用writer函式寫一個csv檔案

  2. 使用reader函式讀取上述步驟寫的csv檔案內容,並在console中輸出

#-*- coding:utf-8 -*-

import csv

if __name__ == "__main__":    print("python csv檔案寫讀操作示例")    
   # 寫csv檔案    print("寫入一些簡單資料到csv_data.csv檔案中")    
   with
open('csv_data.csv', 'w', newline='') as csvfile:        spamwriter = csv.writer(csvfile,  # 為開啟要寫的檔案物件            delimiter=',' # 分隔符            )        spamwriter.writerow(['csv_demo'
] * 5 + ['DeepTest'])        spamwriter.writerow(['hello',
           'Study Python3'
, 'Auto Testing'])        csvfile.close()    print("讀取csv_data.csv問內容")    
   with
open('csv_data.csv', 'r') as f:        reader = csv.reader(f, delimiter=',')        
       for
row in reader:            print("row的型別: ", type(row))            print(row)            

           # 遍歷每行中每個資料項
           for data in row:                print(data, "  ")                f.close()

        在Python csv模組中還提供了另外一種方式來讀寫csv檔案,就是通過字典方式來讀寫,其提供的主要方法為:DictReader、DictWriter,下面我們一起一個基本的示例,大家可以根據這個示例與上面的示例進行對比,看看有什麼不同。

#-*- coding:utf-8 -*-
import csv

if
__name__ == "__main__":    print("python csv檔案字典寫讀操作示例")    

   # 寫csv檔案
   print("寫入一些簡單資料到csv_dict_data.csv檔案中")  
 
   with open('csv_dict_data.csv', 'w') as csvfile:        
       # 寫csv頭        fieldnames = ['first_name', 'last_name']        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)        writer.writeheader()        
       
       # 寫csv內容        writer.writerow({'first_name': 'Baked',
               'last_name': 'Beans'})        writer.writerow({'first_name': 'Lovely',
               'last_name': 'Spam'})        writer.writerow({'first_name': 'Wonderful',
               'last_name'
: 'Spam'})    print("讀取csv_dict_data.csv問內容")    
   with
open('csv_dict_data.csv') as csvfile:        reader = csv.DictReader(csvfile)        
       for row in reader:            
           # 遍歷每行中的資料            print(row['first_name'], row['last_name'])

本文介紹了csv讀寫的兩種方式,大家可以仔細比對二者的區別,掌握其應用場景。

                              來源於網路,如若侵犯您的權益,請留言聯絡我,我會第一時間處理!