csv(comma-separated values,逗號分隔值),是一種純文字形式儲存**資料的檔案。該檔案由任意數目的記錄組成,每條記錄被分隔符分隔為字段(最常見的分隔符是逗號或製表符),且每條記錄都有相同的字段序列,因此csv相當於乙個結構化表的純文字形式。從直觀上看,它比excel檔案更加簡潔,然而它不包含諸如xls電子**的數值、公式和格式等內容,它僅僅為乙個結構化的純文字。
在csv檔案讀寫操作中,常用兩種讀寫方式是列表讀寫和字典讀寫,下面我們分別來對此進行介紹。
csv檔案讀取主要是使用reader()和dictreader()方法,二者均接收乙個csv檔案引數,並返回乙個用於檔案讀取迭代器。這兩個方法的區別是:reader()方法獲取的是一行行列表資料的迭代器,每行的資料可通過下標來獲取,而dictreader()方法獲取的是一行行字典資料的迭代器,每行的資料可通過鍵來獲取。
同檔案讀取一樣,檔案的寫入也有兩種方法——writer()和dictwriter(),其含義和reader()/dictreader()相類似,writer()用於列表資料寫入,而dictwriter()用於字典資料寫入。二者使用方法也比較簡單,但需要注意的是由於是寫入檔案,需要指明檔案的編碼方式(特別是需要寫入中文字元時),具體的用法如下所示。##csv檔案讀取的兩種方式
import csv
# 列表讀取
with
open
('data.csv'
,'r'
)as fp:
reader = csv.reader(fp)
#返回讀取迭代器
titles =
next
(reader)
#提取出檔案記錄標題
(type
(titles))#
(titles)
#['id', 'name', 'city']
for x in reader:
#遍歷向下迭代
(x)#['001', 'mike', 'beijing']...
id= x[0]
name = x[1]
city = x[2]
print()
## 字典讀取
with
open
('data.csv'
,'r'
)as fp:
reader = csv.dictreader(fp)
#迭代器,但不包含標題資料(第0行)
for x in reader:
(type
(x))
(x)#ordereddict([('id', '001'), ('name', 'mike'), ('city', 'beijing')])...
id= x[
'id'
] name = x[
'name'
] city = x[
'city'
]print()
#
在開啟待寫入csv檔案時,這裡我們還傳入了乙個newline引數,並且其值為空字串,這麼做是為了防止在每次寫完一行後其會自動再寫入乙個換行符,如下圖為設定和不設定newline的檔案寫入對應結果:##csv檔案寫入的兩種方式
import csv
# 列表寫入
# 設定記錄標題(列表)和記錄值(乙個巢狀元組集或列表集的列表)
headers =
['id'
,'name'
,'province'
]values =[(
'001'
,'shenzhen'
,'guangdong'),
('002'
,'wuhan'
,'hubei'),
('003'
,'chengdu'
,'sichuan')]
# 使用open函式時設定引數encoding以防止亂碼
with
open
('citylist.csv'
,'w'
,encoding=
'utf-8'
,newline='')
as fp:
writer = csv.writer(fp)
#獲取檔案
writer.writerow(headers)
#寫入一行記錄
writer.writerows(values)
#寫入多行記錄,傳入的引數為列表結構
# 字典寫入
# 設定記錄標題(列表)和記錄值(乙個巢狀字典集的列表)
headers =
['id'
,'name'
,'province'
]values =[,
,]with
open
('citydict.csv'
,'w'
, encoding=
'utf-8'
, newline='')
as fp:
writer = csv.dictwriter(fp,headers)
#獲取檔案,注意引數還需傳遞記錄標題以對映,注意此時並不會真正寫入標題
writer.writeheader(
)#寫入記錄標題
writer.writerows(values)
#寫入多行記錄
設定了newline的檔案寫入結果:
「」」id,name,province
001,shenzhen,guangdong
002,wuhan,hubei
003,chengdu,sichuan
「」」未設定newline的檔案寫入結果:
「」」id,name,province
001,shenzhen,guangdong
002,wuhan,hubei
003,chengdu,sichuan
「」」
python使用csv讀寫CSV檔案
檔案的讀 import csv with open test.csv r as csv file reader csv.reader csv file for line in reader print line 檔案的寫 import csv 表頭 file header houseinfo hou...
寫csv檔案 Python讀寫CSV
逗號分隔值 comma separated values,csv,有時也稱為字元分隔值,因為分隔字元也可以不是逗號 其檔案以純文字形式儲存 資料 數字和文字 1 首先匯入csv模板 2 建立乙個csv檔案物件 3 開啟檔案進行讀取 結果 測試1 軟體測試工程師 測試2 軟體測試工程師 測試3 軟體測...
Python讀寫csv檔案
1.寫入並生成csv檔案 coding utf 8 import csv csvfile file csv test.csv wb writer csv.writer csvfile writer.writerow 姓名 年齡 data 小河 25 1234567 小芳 18 789456 writ...