Python CSV 文件解析和生成方法示例
思路
- 簡(jiǎn)單的生成和讀取 CSV
- CSV 文件格式
- 使用 csv 庫(kù)
Python with CSV
先有個(gè)很樸素的生成和解析的方法。
生成:
data = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ] for cow in data: print(','.join(map(str, cow)))
生成結(jié)果:
1,2,3
4,5,6
7,8,9
解析
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']]
但是顯示的數(shù)據(jù)可能不這么理想,比如其中的某一項(xiàng)有 ,
的時(shí)候就會(huì)有問(wèn)題了。
CSV 格式
CSV 中有幾個(gè)概念需要先了解下。CSV 雖然是 Comma-separated values 但并不一定用逗號(hào)來(lái)分隔,也可以用其他的來(lái)分隔。同時(shí) CSV 也沒(méi)有一個(gè)明確的規(guī)范。
從 Python 的 csv 的文檔中看到的一些關(guān)鍵術(shù)語(yǔ):
delimiter
,最基本的分隔符
quotechar
,如果某個(gè) item 中包含了分隔符,應(yīng)該用 quotechar 把它包裹起來(lái)
doublequote
,如果某個(gè) item 中出現(xiàn)了 quotechar 那么可以把整個(gè)內(nèi)容用 quotechar 包裹,并把 quotechar double 一下用來(lái)做區(qū)分
escapechar
,如果不用 doublequote 的方法還可以用 escapechar 來(lái)輔助
lineterminator
,每一行的結(jié)束符,默認(rèn)的是 \r\n
quoting
,可以選擇任何時(shí)候都使用 quotechar 來(lái)包裹內(nèi)容,或者是需要用到的時(shí)候再用,或者不用
skipinitialspace
,是否忽略分隔符后面跟著的空格
strict
,這個(gè)是 Python 自己的,是否拋要異常
(上面的可能沒(méi)有覆蓋所有的細(xì)節(jié),但大概就是這樣的情況)
使用 Python 的 csv 庫(kù)
13.1. csv — CSV File Reading and Writing — Python 2.7.12 documentation
很簡(jiǎn)單的例子就是
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)
另外這里面有個(gè) dialect 的概念,就是用一個(gè) dialect 來(lái)定義上面提到的那些解析規(guī)則。
可以自己注冊(cè)(csv.register_dialect
)、列出所有的(csv.list_dialects
)、獲取某個(gè)(csv.get_dialect
)。
默認(rèn)是用逗號(hào)分隔的 excel
的 dialect,所以如果沒(méi)有特殊情況應(yīng)該直接使用默認(rèn)值就夠了。
其他
這次先只把基本概念了解下,后面可能還有文件編碼之類(lèi)的坑,到時(shí)遇到了再回來(lái)更新。
參考
PEP 305 -- CSV File API | Python.org
13.1. csv — CSV File Reading and Writing — Python 2.7.12 documentation
以上就是Python CSV 文件解析和生成方法示例的詳細(xì)內(nèi)容,更多關(guān)于Python CSV文件解析生成的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何寫(xiě)好?Python?的?Lambda?函數(shù)
這篇文章主要介紹了如何寫(xiě)好?Python?的?Lambda?函數(shù),Lambda?函數(shù)是?Python?中的匿名函數(shù),下面文章通過(guò)介紹Lambda?函數(shù)的相關(guān)內(nèi)容展開(kāi)文章主題,需要的小伙伴可以參考一下2022-03-03Python實(shí)現(xiàn)的個(gè)人所得稅計(jì)算器示例
這篇文章主要介紹了Python實(shí)現(xiàn)的個(gè)人所得稅計(jì)算器,涉及Python條件判斷與數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06python實(shí)現(xiàn)給微信指定好友定時(shí)發(fā)送消息
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)給微信指定好友定時(shí)發(fā)消息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04python pandas loc 布爾索引示例說(shuō)明
loc跟iloc的區(qū)別,首先loc是location的意思,和iloc中i的意思是指integer,所以它只接受整數(shù)作為參數(shù),詳情見(jiàn)下面2022-03-03python 定時(shí)修改數(shù)據(jù)庫(kù)的示例代碼
這篇文章主要介紹了python 定時(shí)修改數(shù)據(jù)庫(kù)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04