Python對CSV文件的讀取與寫入


CSV 文件(Comma Separated Values file,即逗號分隔值文件)是一種純文本文件,它使用特定的結構來排列表格數據。因為是純文本文件,所以 csv 只包含實際的文本數據 —— 換句話說,csv 可以包含可打印的 ASCII 或 Unicode 字符。那在python中對CSV文件要怎么進行操作呢?

 

首先要先准備一個CSV文件,創建一個excel文件,並另存為csv文件,放入幾行數據,我准備里面的內容是:

 

 

 

一、導入CSV包

import csv

 

二、CSV文件基本讀取

def read_csv():
    with open('file.csv','r') as f:
        rete = csv.reader(f)        # 讀取后返回的是一個_csv.reader的對象,如果通過遍歷,可以看到是一個個列表
        for x in rete:
            print(x)

運行結果:

['編號', '課程', '講師']
['1', 'Python', 'Tom']
['2', 'C#', 'Jesee']
['3', 'Django', 'Nike']
['4', '.Net', 'Kangkang']

 

通過以上方法,就讀取出CSV文件里面的內容。

 

三、讀取CSV文件並用namedtuple映射列名

def read_namedtuple():
    with open('file.csv','r') as f:
        red = csv.reader(f)     # 讀取后返回的是一個_csv.reader的對象,如果通過遍歷,可以看到是一個列表
        head = next(red)        # 要把第一行給分隔開,不然會當成數據一起打印了
        ow = namedtuple('Row',head)
        # 用nmaedtuple來定義的,它的對象名稱就叫Row,后面列表給它的數據就是最終這個對象的值,而head里面的表頭就當作是Row對象值的名稱
        for x in red:
            row = ow(*x)        # *r就是對遍歷到的r進行解包,然后傳遞給Row,它會將每一列對應到Row對象值的名稱下面
            print(row)

運行結果:

Row(編號='1', 課程='Python', 講師='Tom')
Row(編號='2', 課程='C#', 講師='Jesee')
Row(編號='3', 課程='Django', 講師='Nike')
Row(編號='4', 課程='.Net', 講師='Kangkang')

 

 

四、讀取CSV文件並以字典的形式映射

def read_dict():
    '''讀取csv並以字典的形式映射'''
    with open('score.csv','r') as f:
        red = csv.DictReader(f)     # 通過csv自帶的DictReader方法將數據轉換成字典表
        for x in red:
            print(x)              # 遍歷出來每個x都是一個字典表

運行結果:

{'編號': '1', '課程': 'Python', '講師': 'Tom'}
{'編號': '2', '課程': 'C#', '講師': 'Jesee'}
{'編號': '3', '課程': 'Django', '講師': 'Nike'}
{'編號': '4', '課程': '.Net', '講師': 'Kangkang'}

 

 

五、寫入CSV文件

寫入單行內容到CSV文件

def write_csv(s,q):
    with open('file.csv','a',newline='') as f:     # newline=空是因為我們文件是csv類型,如果不加這個東西,當我們寫入東西的時候,就會出現空行
        xieru = csv.writer(f,dialect='excel')       # 定義一個變量進行寫入,將剛才的文件變量傳進來,dialect就是定義一下文件的類型,我們定義為excel類型
        xieru.writerow(s)       # 寫入的方法是writerow,通過寫入模式對象,調用方法進行寫入
        xieru.writerow(q)
        print('寫入完成')

s = [5, 'Java', 'Mark']
q = [6, 'C++', 'William']
write_csv(s,q)

運行結果:

寫入完成

 

寫入多行內容到CSV文件

def write_csv(s):
    with open('file.csv','a',newline='') as f:
        xieru = csv.writer(f,dialect='excel')
        xieru.writerows(s)       # writerows方法是一下子寫入多行內容
        print('寫入完成')

e = [(7,'PHP','Jones'),(8,'HTTP','Brown')]
write_csv(e)

運行結果:

寫入完成

 

六、以字典表的形式寫入CSV文件

def write_dict(q):
    biao = ['編號','課程','講師']
    with open('file.csv', 'a', newline='') as f:
        xieru = csv.DictWriter(f,biao)
        xieru.writerows(q)  # writerows方法是一下子寫入多行內容
        print('寫入完成')

u = [
    {'編號': 9, '課程': 'SQL', '講師': 'Miller'},
    {'編號': 10, '課程': 'MySQL', '講師': 'Davis'}
]
write_dict(u)

運行結果:

寫入完成

 

這就Python對CSV文件的讀取與寫入,你看懂了嗎?如果沒看懂,歡迎留言交流哦!

 
 
本文轉自:https://www.myblou.com/archives/1466


免責聲明!

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



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