歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python標准庫_csv

Python標准庫_csv

日期:2017/3/1 9:41:21   编辑:Linux編程

簡介

所謂的csv(逗號分隔值Comma Separated Values)格式是最通用的用於電子表格和數據庫的導入和導出格式。因為沒有“csv標准”,所以格式被讀寫它的許多應用程序自由定義。缺乏標准也意味著不同應用程序在產生和使用數據時總是存在一些微小的差異。這些差異使得處理來自多種源的CSV文件時令人頭疼。同時,分隔符和引用符的多樣性,使得所有格式足夠相近以至於編寫一個能夠有效操作這種數據,對程序員隱藏讀寫數據細節的獨立模塊成為可能。

《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm

Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm

函數

讀文件

可以使用reader()創建一個對象從csv文件讀取數據。這個閱讀器可以用作一個迭代器,按順序處理文件的行。

$ cat s_player_school_table.csv

c_school_id,c_hp_fixed,c_hp_factor,c_mana_fixed,c_mana_factor,c_ap_factor

0,150,20,140,15,1

1,90,20,140,15,1

2,180,20,151,15,1

3,229,20,177,15,4.4

4,208,20,177,15,6.7

5,208,20,177,15,6.7

$ cat read_csv.py

import csv

import sys

with open(sys.argv[1],'r') as csv_file:

csv_reader=csv.reader(csv_file)

for row in csv_reader:

print row

reader()的第一個參數是文本行的源。上例中是一個文件,也可以是任何可迭代的對象(如stringIO實例、list等等)。還可以指定其他可選參數,來控制如何解析輸入數據。

$ cat read_from_list.py

import csv

csv_file=csv.reader(['hello','signjing','goodnight'])

for i in csv_file:

print i

$ python read_from_list.py

['hello']

['signjing']

['good night']

讀文件時,輸入數據的每一行都會解析,並轉換為一個字符串list。

$ python read_csv.pys_player_school_table.csv

['c_school_id', 'c_hp_fixed','c_hp_factor', 'c_mana_fixed', 'c_mana_factor', 'c_ap_factor']

['0', '150', '20', '140', '15', '1']

['1', '90', '20', '140', '15', '1']

['2', '180', '20', '151', '15', '1']

['3', '229', '20', '177', '15', '4.4']

['4', '208', '20', '177', '15', '6.7']

['5', '208', '20', '177', '15', '6.7']

這個解析器會處理嵌在字符串中的換行符,正是這個原因,這裡的行(row)並不一定等同於文件的一個輸入行(line)。

$ cat s_player_school_table.csv

c_school_id,c_hp_fixed,c_hp_factor,c_mana_fixed,c_mana_factor,c_ap_factor

0,150,20,"abc

def",15,1

1,90,20,140,15,1

$ python read_csv.pys_player_school_table.csv

['c_school_id', 'c_hp_fixed','c_hp_factor', 'c_mana_fixed', 'c_mana_factor', 'c_ap_factor']

['0', '150', '20', 'abc\ndef','15', '1']

['1', '90', '20', '140', '15', '1']

由解析器返回時,輸入中帶換行符的字段仍保留內部換行符。

閱讀器對象

$ cat s_player_school_table.csv

c_school_id,c_hp_fixed,c_hp_factor,c_mana_fixed,c_mana_factor,c_ap_factor

0,150,20,"abc

def",15,1

1,90,20,140,15,1

$ cat attributes.py

import csv

with open('s_player_school_table.csv','r')as f:

csv_file=csv.reader(f)

for i in csv_file:

print csv_file.dialect

print i

print csv_file.line_num

print

with open('s_player_school_table.csv','r')as f:

csv_file=csv.DictReader(f)

print csv_file.fieldnames

$ python attributes.py

<_csv.Dialect object at 0xb7c64ac0>

['c_school_id', 'c_hp_fixed','c_hp_factor', 'c_mana_fixed', 'c_mana_factor', 'c_ap_factor']

1

<_csv.Dialect object at 0xb7c64ac0>

['0', '150', '20', 'abc\ndef', '15', '1']

3

<_csv.Dialect object at 0xb7c64ac0>

['1', '90', '20', '140', '15', '1']

4

['c_school_id', 'c_hp_fixed','c_hp_factor', 'c_mana_fixed', 'c_mana_factor', 'c_ap_factor']

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-08/105048p2.htm

Copyright © Linux教程網 All Rights Reserved