簡單的生成和讀取 CSVhtml
CSV 文件格式python
使用 csv 庫app
先有個很樸素的生成和解析的方法。編碼
生成:spa
data = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ] for cow in data: print(','.join(map(str, cow)))
生成結果:excel
1,2,3 4,5,6 7,8,9
解析code
s = """1,2,3 4,5,6 7,8,9 """ cows = s.splitlines() data = [] for cow in cows: items = cow.split(',') data.append(items) # data # [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
可是顯示的數據可能不這麼理想,好比其中的某一項有 ,
的時候就會有問題了。orm
CSV 中有幾個概念須要先了解下。CSV 雖然是 Comma-separated values 但並不必定用逗號來分隔,也能夠用其餘的來分隔。同時 CSV 也沒有一個明確的規範。htm
從 Python 的 csv 的文檔中看到的一些關鍵術語:ip
delimiter
,最基本的分隔符
quotechar
,若是某個 item 中包含了分隔符,應該用 quotechar 把它包裹起來
doublequote
,若是某個 item 中出現了 quotechar 那麼能夠把整個內容用 quotechar 包裹,並把 quotechar double 一下用來作區分
escapechar
,若是不用 doublequote 的方法還能夠用 escapechar 來輔助
lineterminator
,每一行的結束符,默認的是 \r\n
quoting
,能夠選擇任什麼時候候都使用 quotechar 來包裹內容,或者是須要用到的時候再用,或者不用
skipinitialspace
,是否忽略分隔符後面跟着的空格
strict
,這個是 Python 本身的,是否拋要異常
(上面的可能沒有覆蓋全部的細節,但大概就是這樣的狀況)
CSV Wiki 中的 Basic rules 和 Example 寫的很清晰。
13.1. csv — CSV File Reading and Writing — Python 2.7.12 documentation
很簡單的例子就是
import csv with open('some.csv', 'rb') as f: reader = csv.reader(f) for row in reader: print row
import csv with open('some.csv', 'wb') as f: writer = csv.writer(f) writer.writerows(someiterable)
另外這裏面有個 dialect 的概念,就是用一個 dialect 來定義上面提到的那些解析規則。
能夠本身註冊(csv.register_dialect
)、列出全部的(csv.list_dialects
)、獲取某個(csv.get_dialect
)。
默認是用逗號分隔的 excel
的 dialect,因此若是沒有特殊狀況應該直接使用默認值就夠了。
此次先只把基本概念瞭解下,後面可能還有文件編碼之類的坑,到時遇到了再回來更新。