天天看點

用 Python 将資料寫到 CSV 檔案

Python 标準庫中,有個名為 csv 的庫,專門處理 csv 的讀寫操作。具體使用執行個體如下:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import csv
import codecs
# codecs 是自然語言編碼轉換子產品

fileName = 'test.csv'

# 指定編碼為 utf-8, 避免寫 csv 檔案出現中文亂碼
with codecs.open(fileName, 'w', 'utf-8') as csvfile:
    # 指定 csv 檔案的頭部顯示項
    filednames = ['書名', '作者','出版社']
    writer = csv.DictWriter(csvfile, fieldnames=filednames)

    books = []
    book = {
        'title': '笑傲江湖',
        'author': '金庸',
        'publish':'人民出版社'
    }
    books.append(book)

    writer.writeheader()
    for book in books:
        try:
            writer.writerow({'書名':book['title'], '作者':book['author'],'出版社':book['publish']})
        except UnicodeEncodeError:
            print("編碼錯誤, 該資料無法寫到檔案中, 直接忽略該資料")
           

這種方式是逐行往 CSV 檔案中寫資料, 是以效率會比較低。如果想批量将資料寫到 CSV 檔案中,需要用到 pandas 庫。

pandas 是第三方庫,是以使用之前需要安裝。通過 pip 方式安裝是最簡單、最友善的。

pip install pandas
           

使用 pandas 批量寫資料的用法如下:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import pandas as pd
fileName = 'test.csv'
number = 

books = []
book = {
    'title': '笑傲江湖',
    'author': '金庸',
}
# 如果 book 條數足夠多的話,pandas 會每次往檔案中寫 50 條資料。
books.append(book)

data = pd.DataFrame(books)
# 寫入csv檔案,'a+'是追加模式
try:
    if number == :
        csv_headers = ['書名', '作者']
        data.to_csv(fileName, header=csv_headers, index=False, mode='a+', encoding='utf-8')
    else:
        data.to_csv(fileName, header=False, index=False, mode='a+', encoding='utf-8')
        number = number + 
except UnicodeEncodeError:
    print("編碼錯誤, 該資料無法寫到檔案中, 直接忽略該資料")