python操作csv文件


CSV(Comma-Separated Values)即逗號分隔值,可以用Excel打開查看。由於是純文本,任何編輯器也都可打開。與Excel文件不同,CSV文件中:

值沒有類型,所有值都是字符串,不能指定字體顏色等樣式,不能指定單元格的寬高,不能合並單元格沒有多個工作表,不能嵌入圖像圖表

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

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

”將data內容寫入csv文件,如下圖所示:
 1 import csv
 2 data =[
 3 #使用數字和字符串的數字都可以
 4 ("ken","mafe",23),
 5 ("Tame","maee",29),
 6 ("Js","dggd",26)]
 7 with open("d://test.csv",'w',newline='')as t_file:
 8     csv_writer = csv.writer(t_file)
 9     for l in data:
10         csv_writer.writerow(l)

 

第二步運行py文件之后,我們可以看到d盤已經創建了test.csv文件,如下圖所示:

 

第三步打開test.csv文件,可以看到已經將內容寫入到csv文件中了:

上面就簡單介紹了csv的寫,下面來看一下csv讀的方法:

第一步,輸入

1 import csv
2 reader =csv.reader(open('d://test.csv'))#打開
3 for list in reader:
4     print(list)

 

 第二步運行py文件,可以看到讀取了csv文件內容,這里需要注意的是如果直接將excel表格后綴名改為csv文件,讀取的時候,會出現編碼錯誤

在上面,list是一個列表,如果想要查看固定的某列,則需要加上下標,例如我想要查看age,那么只需要改為list[1]

 

 

補充:

在寫入字典序列類型數據的時候,需要傳入兩個參數,一個是文件對象——f,一個是字段名稱——fieldnames,到時候要寫入表頭的時候,只需要調用writerheader方法,寫入一行字典系列數據調用writerrow方法,並傳入相應字典參數,寫入多行調用writerows

 

 1 import csv
 2 header=['name','age']
 3 data =[
 4 {'name':'mafe','age':23},
 5 {'name':'maee','age':29},
 6 {'name':'dggd','age':26}]
 7 with open("d:\\test.csv",'w',newline='')as t_file:
 8     #表頭在這里傳入,作為第一行數據
 9     writer = csv.DictWriter(t_file,header)
10     writer.writeheader()
11     for l in data:
12         writer.writerow(l)

再打開test.csv結果如下:

 

假設csv文件的內容如上圖圖所示,用DictReader來讀取它

DictReader會將第一行的內容(類標題)作為key值,第二行開始才是數據內容。即圖中的csv文件有2列4行數據,第一列的key值為name,第二列的key值為age:

1 import csv
2 with open('d://test.csv',encoding='utf-8')as f:
3     reader =csv.DictReader(f)#字典表 DictReader 列表讀取
4     headers =next(reader)#迭代一次
5     print(headers)
6     for row in reader:
7         print(row)

運行結果如下:

 

最后提醒一下:

read方法的使用:打印出來的結果是數組類型,有文件中幾行數據就打印幾個數組,不區分表頭和值

 

DictReader方法的使用:打印出來的數據是字典類型,表格的表頭為鍵、每一行的值為值,值有幾行就打印幾個字典

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM