csv是英文comma separate values(逗號分隔值)的縮寫,顧名思義,文件的內容是由 「,」 分隔的一列列的資料構成的。
python的庫csv
就是處理csv文件的乙個非常強大的庫,我們要處理csv文件,必須先導入它。
import csv
# 讀取csv至字典
csvfile =
open
("instance.csv"
,"r"
)reader = csv.reader(csvfile)
# 建立空字典
result =
for item in reader:
# 忽略第一行
if reader.line_num ==1:
continue
result[item[0]
]= item[1]
csvfile.close(
)print
(result)
首先,跟文字檔案一樣,需要open()
函式將csv文件開啟,我在此將開啟方式定義為唯讀。然後通過csv.reader()
函式建立乙個讀入資料的物件,我起名為reader
建立的資料是個一對一的關係型資料,那索性就通過字典這種結構完成資料的讀取,所以,建立了乙個空字典result(後面會講csv自帶的將csv文件讀取為字典的函式)
reader物件其實就是由csv文件的多行資料構成的,每行資料會有乙個屬性:line_num
表示行數,顯然,剛才的資料第一行」name,score」只是資料說明,我們忽略掉。
如果用for迴圈迭代訪問reader,我們會發現,每一行都是乙個列表,列表的每個元素就是csv文件的每一行中 「,」 分隔開的資料。比如:
import csv
csvfile =
open
("instance.csv"
,"r"
)reader = csv.reader(csvfile)
for item in reader:
print
(item)
# >>> ['name', 'score']
# >>> ['zhang', '100']
# >>> ['wang', '80']
# >>> ['li', '90']
(1)直接寫入
當然也可以將資料寫入csv文件,我們可以將資料以列表的形式寫入:
import csv
# 檔案頭,一般就是資料名
fileheader =
["name"
,"score"
]# 假設我們要寫入的是以下兩行資料
d1 =
["wang"
,"100"
]d2 =
["li"
,"80"
]# 寫入資料
csvfile =
open
("instance.csv"
,"w"
)writer = csv.writer(csvfile)
# 寫入的內容都是以列表的形式傳入函式
writer.writerow(fileheader)
writer.writerow(d1)
writer.writerow(d1)
csvfile.close(
)
當然,每次寫完一行之後,會自動換行,所以,寫結果就是我們想要的形式:
需要注意的是最後還有乙個空行。
當然,像這種寫入多行的情況,可以用更方便的函式writerows()
,還是上面的例子,可以把三行寫入的**,換成以下一行。但是傳入的引數是乙個列表,每個元素代表需要寫入的每行資料。得到的結果和上面是一樣的。
writer.writerows(
[fileheader, d1, d2]
)
(2)追加
除了直接寫入,還能實現追加:還是剛才那個例子,我現在將一行新的資料新增到舊的資料後面,最後寫入csv
import csv
# 新增的資料行,以列表的形式表示
add_info =
["guo"
,150
]# 以新增的形式寫入csv,跟處理txt檔案一樣,設定關鍵字"a",表追加
csvfile =
open
("instance.csv"
,"a"
)# 新建物件writer
writer = csv.writer(csvfile)
# 寫入,引數還是列表形式
writer.writerow(add_info)
csvfile.close(
)
CSV檔案讀寫
delimiter 分隔符 quotechar 如果某個item中包含了分隔符,用quotechar包裹 doublequote quotechar double 一下用來做區分 escapechar 如果不用 doublequote 的方法還可以用 escapechar 來輔助 linetermi...
CSV 檔案讀寫
乙個臨時的任務,需要把乙個有幾百萬條記錄的 csv 檔案分割成多個小一點的檔案,沒找到合適的分割工具,就花了一點時間研究了 csv 檔案的讀寫操作。成果如下 public static arraylistreadcsvbycsvreader string filepath reader.close ...
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...