python解析.csv文件--csv模塊(內置)


第一part:CSV文件格式介紹


1) CSV的含義:

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

2)CSV的特點:
(1)讀取出的數據一般為字符類型,如果是數字需要手動轉換為數字;
(2)以行為單位讀取數據;
(3)列之間以半角逗號或制表符為分隔,一般為半角逗號;
(4)一般為每行開頭不空格,第一行是屬性列,數據列之間以間隔符為間隔無空格,行之間無空行。

3)CSV的文件內容結構:

 

 

 


 第二part:讀取csv格式數據--reader


 操作.csv文件可以直接使用python的內置模塊:csv,讀數據的代碼如下:

#導包
import csv
#csv格式文件實際就是文本類型;讀取csv文件數據
#如果文件中存在中文的話,則必須設定其編碼格式,否則得到的結果可能是亂碼
with open("data1.csv", encoding="utf-8") as fp:
get_read_csv=csv.reader(fp,dialect="excel")
# 返回的是get_read_csv是一個迭代器:__iter__ __next__
print("表頭的值為:",next(get_read_csv))
#遍歷表內容,輸出每行的值,類型為list,可以根據需求輸出需要的類型
for value in get_read_csv:
print("表內容為",value)

執行結果,如下:

 

 從上面代碼可發現,讀取csv格式的數據,使用的是csv.reader()方法

csv.reader(csvfile, dialect='excel',delimiter='\t'**fmtparams):

該函數返回一個reader對象,該對象可以迭代csv文件中的每一行,csv文件可以是任意支持iteratior協議的對象。每次調用它的__next__()方法(文件對象和列表對象都適用的方法),該對象返回一個字符串。從csv文件讀取的每一行,都以列表的形式返回。
參數解釋:
csvfile:可以是任何支持迭代器協議的對象,它每次返回一個字符串。如果它是一個文件對象,它應該以newline=''的形式打開(參照樣例).
dialect:是一個可選參數,用來定義一個僅針對特定CSV dialect的參數集。它可能是一個Dialect類的子類實例或由list_dialects()返回的多個字符串中的一個。

delimiter:是一個可選參數,delimiter='\t'表示去掉分隔符'\t'

 


 

第三part:寫數據到csv文件中



import csv

#csv文件中進行寫入數據
with open("data1.csv",mode="a") as fp:
#創建寫入對象
writer_csv=csv.writer(fp)
#writerow以一行的形式進行寫入,傳入的是一個可迭代對象
#傳入的值類型為元組
writer_csv.writerow(("a","b","c"))
# 傳入的值類型為列表
writer_csv.writerow([1,2,3,4,5,6])
#傳入的是值類型為字典
writer_csv.writerow({"name": "zhangans", "age": 10})
# 上述代碼實際寫入到csv文件中的是對應字典的鍵名,不會將值寫入(因為默認操作是字典的鍵名),如果需要傳入對應的鍵值的話則可以使用下面代碼:
writer_csv.writerow([value for value in {"name": "zhangsan", "age": 10}.values()])
# 寫多行:可以通過writerows方法,傳入的參數是一個二維可迭代對象
writer_csv.writerows([[1,2,3],[4,5,6]])
執行結果,如下:

 

 
        

 

 
 

 


免責聲明!

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



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