Python處理csv檔案實例詳解

零下一度
發布: 2018-05-17 16:24:58
原創
10149 人瀏覽過

Python處理csv檔案

CSV(Comma-Separated Values)即逗號​​分隔值,可以用Excel開啟檢視。由於是純文本,任何編輯器也都可開啟。與Excel檔案不同,CSV檔案中:

  • 值沒有類型,所有值都是字串

  • ##不能指定字體顏色等樣式

  • 無法指定儲存格的寬高,不能合併儲存格

  • #沒有多個工作表

  • 不能嵌入圖像圖表

在CSV檔案中,以

,作為分隔符,分隔兩個單元格。像這樣a,,c表示單元格a和單元格c之間有個空白的單元格。依此類推。

不是每個逗號都表示單元格之間的分界。所以即使CSV是純文字文件,也堅持使用專門的模組來處理。 Python內建了csv模組。先看一個簡單的例子。

從CSV檔案讀取資料

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.reader(f)print(list(reader))
登入後複製

data不能直接列印,list(data)最外層是list,裡層的每一行資料都在一個在list中,有點像這樣

[['name', 'age'], ['Bob', '14'], ['Tom', '23'], ...]
登入後複製

於是我們可以這樣訪問到Bob的年齡

reader[1][1], 在for迴圈中遍歷如下

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.reader(f)for row in reader:# 行号从1开始print(reader.line_num, row)
登入後複製

要注意的是,reader只能遍歷一次。由於reader是可迭代對象,可以使用

next方法一次取得一行。

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.reader(f)# 读取一行,下面的reader中已经没有该行了head_row = next(reader)for row in reader:# 行号从2开始print(reader.line_num, row)
登入後複製

寫資料到csv檔案中

有reader可以讀取,當然也有writer可以寫入。一次寫入一行,一次寫入多行都可以。

import csv# 使用数字和字符串的数字都可以datas = [['name', 'age'],
         ['Bob', 14],
         ['Tom', 23],
        ['Jerry', '18']]with open('example.csv', 'w', newline='') as f:
    writer = csv.writer(f)for row in datas:
        writer.writerow(row)        # 还可以写入多行writer.writerows(datas)
登入後複製

如果不指定

newline='',則每寫入一行將有一空行被寫入。上面的程式碼產生如下內容。

name,age
Bob,14
Tom,23
Jerry,18
name,age
Bob,14
Tom,23
Jerry,18
登入後複製

DictReader和DictWriter物件

使用DictReader可以像操作字典一樣操作數據,把表格的第一行(一般是標頭)當作key。使用key可存取行中那個key對應的資料。

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.DictReader(f)for row in reader:# Max TemperatureF是表第一行的某个数据,作为keymax_temp = row['Max TemperatureF']print(max_temp)
登入後複製

使用DictWriter類,可以寫入字典形式的數據,同樣鍵也是標頭(表格第一行)。

import csv

headers = ['name', 'age']

datas = [{'name':'Bob', 'age':23},
        {'name':'Jerry', 'age':44},
        {'name':'Tom', 'age':15}
        ]with open('example.csv', 'w', newline='') as f:# 标头在这里传入,作为第一行数据writer = csv.DictWriter(f, headers)
    writer.writeheader()for row in datas:
        writer.writerow(row)        # 还可以写入多行writer.writerows(datas)
登入後複製


#

以上是Python處理csv檔案實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!