Python CSV 文件解析和生成

思路

  • 簡單的生成和讀取 CSVhtml

  • CSV 文件格式python

  • 使用 csv 庫app

Python with CSV

先有個很樸素的生成和解析的方法。編碼

生成: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 中有幾個概念須要先了解下。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 寫的很清晰。

使用 Python 的 csv 庫

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,因此若是沒有特殊狀況應該直接使用默認值就夠了。

其餘

此次先只把基本概念瞭解下,後面可能還有文件編碼之類的坑,到時遇到了再回來更新。

參考

相關文章
相關標籤/搜索