python 讀寫csv資料

2021-09-27 10:03:55 字數 3062 閱讀 5487

csv(comma-separated values,逗號分隔值),是一種純文字形式儲存**資料的檔案。該檔案由任意數目的記錄組成,每條記錄被分隔符分隔為字段(最常見的分隔符是逗號或製表符),且每條記錄都有相同的字段序列,因此csv相當於乙個結構化表的純文字形式。從直觀上看,它比excel檔案更加簡潔,然而它不包含諸如xls電子**的數值、公式和格式等內容,它僅僅為乙個結構化的純文字。

在csv檔案讀寫操作中,常用兩種讀寫方式是列表讀寫和字典讀寫,下面我們分別來對此進行介紹。

csv檔案讀取主要是使用reader()和dictreader()方法,二者均接收乙個csv檔案引數,並返回乙個用於檔案讀取迭代器。這兩個方法的區別是:reader()方法獲取的是一行行列表資料的迭代器,每行的資料可通過下標來獲取,而dictreader()方法獲取的是一行行字典資料的迭代器,每行的資料可通過鍵來獲取。

##csv檔案讀取的兩種方式

import csv

# 列表讀取

with

open

('data.csv'

,'r'

)as fp:

reader = csv.reader(fp)

#返回讀取迭代器

titles =

next

(reader)

#提取出檔案記錄標題

print

(type

(titles))#

print

(titles)

#['id', 'name', 'city']

for x in reader:

#遍歷向下迭代

print

(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:

print

(type

(x))

#print

(x)#ordereddict([('id', '001'), ('name', 'mike'), ('city', 'beijing')])...

id= x[

'id'

] name = x[

'name'

] city = x[

'city'

]print()

#

同檔案讀取一樣,檔案的寫入也有兩種方法——writer()和dictwriter(),其含義和reader()/dictreader()相類似,writer()用於列表資料寫入,而dictwriter()用於字典資料寫入。二者使用方法也比較簡單,但需要注意的是由於是寫入檔案,需要指明檔案的編碼方式(特別是需要寫入中文字元時),具體的用法如下所示。

##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)

#寫入多行記錄

在開啟待寫入csv檔案時,這裡我們還傳入了乙個newline引數,並且其值為空字串,這麼做是為了防止在每次寫完一行後其會自動再寫入乙個換行符,如下圖為設定和不設定newline的檔案寫入對應結果:

設定了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...