首頁 > 軟體

Python中CSV檔案(逗號分割)實戰操作指南

2022-07-04 18:04:33

一、csv檔案介紹

1、csv檔案簡介

逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其檔案以純文字形式儲存表格資料(數位和文字)。純文字意味著該檔案是一個字元序列,不含必須像二進位制數位那樣被解讀的資料。CSV檔案由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由欄位組成,欄位間的分隔符是其它字元或字串,最常見的是逗號或製表符。通常,所有記錄都有完全相同的欄位序列。通常都是純文字檔案。

2、為什麼要使用csv檔案

在Linux中我們可以通過命令在資料庫中把表匯出來為csv結尾的檔案,其實就是以逗號分割分txt檔案,此檔案我們可以在windows中開啟並且為表格的形式,方便我們進行檢視與再次操作。

eg:

MariaDB [test]> select * from 表名 into outfile "/tmp/test.csv" fields terminated by ","; 

二、csv檔案檢視

注意:這裡我是把csv檔案和python程式碼都放在同級目錄,否則要指定路徑!!!

1、測試檔案建立

(1)這裡我們以windows中的csv檔案來做實驗

(2)我們可以選中內容複製進去,也可以上傳到linux中,這裡我們選擇前者

[root@python _test]# vim test.csv                      ###可以發現複製進去的是以空格為分隔符
id      username        passwd  age
1       dream1  123     21
2       dream2  456     22
3       dream3  789     23

### 把空格替換為逗號
[root@python _test]# sed -i 's/s+/,/g' test.csv

2、檢視csv檔案(列表)

(1)讀出結果

[root@python _test]# vim _test.py 
#!/usr/bin/env python
#coding:utf-8
import csv
with open('test.csv', encoding="utf-8") as f:
    reader = csv.reader(f)
    print(reader)
    print(list(reader))

### 檢視結果
[root@python _test]# python _test.py
<_csv.reader object at 0x7f54d9a01eb8>
[['id', 'username', 'passwd', 'age'], ['1', 'dream1', '123', '21'], ['2', 'dream2', '456', '22'], ['3', 'dream3', '789', '23']]

(2)遍歷(從第一行讀取)

[root@python _test]# vim _test.py 
#!/usr/bin/env python
#coding:utf-8
import csv
with open('test.csv', encoding="utf-8") as f:
    reader = csv.reader(f)
    for i in reader:
        print(reader.line_num, i)
 
 ### 檢視結果
[root@python _test]# python _test.py
1 ['id', 'username', 'passwd', 'age']
2 ['1', 'dream1', '123', '21']
3 ['2', 'dream2', '456', '22']
4 ['3', 'dream3', '789', '23']

(2)遍歷(從第二行讀取)

[root@python _test]# vim _test.py
#!/usr/bin/env python
#coding:utf-8
import csv
with open('test.csv', encoding="utf-8") as f:
    reader = csv.reader(f)
    ### 這個就是我們得表頭
    next(reader)
    for i in reader:
        print(reader.line_num, i)
        
### 檢視結果
[root@python _test]# python _test.py    
2 ['1', 'dream1', '123', '21']
3 ['2', 'dream2', '456', '22']
4 ['3', 'dream3', '789', '23']

3、檢視csv檔案(字典)

(1)檢視

[root@python _test]# vim _test.py
#!/usr/bin/env python
#coding:utf-8
import csv
with open('test.csv', encoding="utf-8") as f:
    reader = csv.DictReader(f)
    ### 表頭
    print (reader.fieldnames)
    print (reader,type(reader))
    for i in reader:
        print (i)
        
### 檢視結果
[root@python _test]# python _test.py
['id',  'username',  'passwd',  'age']
<csv.DictReader object at 0x7f3b02213a20> <class 'csv.DictReader'>
OrderedDict([('id', '1'), ('username', 'dream1'), ('passwd', '123'), ('age', '21')])
OrderedDict([('id', '2'), ('username', 'dream2'), ('passwd', '456'), ('age', '22')])
OrderedDict([('id', '3'), ('username', 'dream3'), ('passwd', '789'), ('age', '23')])

(2)檢視第一列(id)

優點:我們不知道表頭在具體那列,我們可以通過表頭名來獲取整列資料,即我們可以隨便調整順序也不會影響我們的資料讀取!!!

[root@python _test]# vim _test.py
#!/usr/bin/env python
#coding:utf-8
import csv
with open('test.csv', encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for i in reader:
        print (i['id'])
        
### 檢視結果
[root@python _test]# python _test.py
1
2
3

4、寫入檔案(列表)

[root@python _test]# vim _test.py
#!/usr/bin/env python
#coding:utf-8
import csv
li = [["id","user","性別"],["1","dreamya1","男"],["2","dreamya2","女"]]
with open('user.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    for i in li:
        writer.writerow(i)

### 檢視結果
[root@python _test]# python _test.py 
[root@python _test]# cat user.csv 
id,user,性別
1,dreamya1,男
2,dreamya2,女

下載到windows中檢視:

[root@python _test]# sz user.csv 

5、寫入檔案(字典)

[root@python _test]# vim _test.py
import csv
#coding:utf-8
headers = ['id', 'username','passwd']
li = [{'id':'1','username':'dream1','passwd':'123'},
        {'id':'2','username':'dream2','passwd':'456'},
        ]
        
with open('user.csv', 'w', newline='') as f:
    ### 表頭傳入
    writer = csv.DictWriter(f, headers)
    writer.writeheader()    
    ### 一行一行寫入
    for i in li:
        writer.writerow(i)
        
    ### 直接把li寫入(多行)
    writer.writerows(li)

### 檢視結果
[root@python _test]# python _test.py
[root@python _test]# cat user.csv 
id,username,passwd
1,dream1,123
2,dream2,456
1,dream1,123
2,dream2,456

windows中檢視:

[root@python _test]# sz user.csv 

總結 

到此這篇關於Python中CSV檔案(逗號分割)的文章就介紹到這了,更多相關Python CSV檔案逗號分割內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com