Python基礎(chǔ)(5)- csv

這里簡單介紹下Python中的csv模塊夯巷,應(yīng)該蠻常用的。
和csv有關(guān),一定要回合打開文件這類操作有關(guān)掀鹅,這里先看下這個open函數(shù)
官方文檔:https://docs.python.org/3/library/functions.html#open

1.open

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)Open file and return a corresponding file object. If the file cannot be opened, an OSError is raised.

file揽碘,就是我們要打開的文件地址次屠;
mode,就是打開的方式雳刺,默認是只讀文本('rt')

newline劫灶,和換行符有關(guān),在網(wǎng)上找了個資料:https://www.zhihu.com/question/19751023

換行符看起來有點兒亂掖桦,以后如果一段問題了再研究下本昏。
下面,我們先來看看csv

2. csv.reader

csv.reader(csvfile, dialect='excel', **fmtparams)Return a reader object which will iterate over lines in the given csvfile.

我們的csv文件是這樣的


import csv

with open(r'D:\document\python_demo\employee_data.csv') as csvfile:
    emp_reader = csv.reader(csvfile)
    for row in emp_reader:
        print(row)

##
runfile('D:/document/python_demo/demo_open.py', wdir='D:/document/python_demo')
['lufei', '20', 'leader', 'onepiece', '100']
['namei', '19', 'teacher', 'onepiece', '999']

就csv文件來說枪汪,會有幾個特點凛俱,比如字段之間的分隔符,換行符等料饥,我們使用上面的dialect來指定
如果我們蒲犬,現(xiàn)在將分隔符,替換為^


我們再次執(zhí)行岸啡,就無法正確分割數(shù)據(jù)了

runfile('D:/document/python_demo/demo_open.py', wdir='D:/document/python_demo')
['lufei^20^leader^onepiece^100']
['namei^19^teacher^onepiece^999']

我們修改下代碼原叮,加上delimiter就行了,詳情參考官網(wǎng):https://docs.python.org/3/library/csv.html#csv-fmt-params

import csv

with open(r'D:\document\python_demo\employee_data.csv') as csvfile:
    emp_reader = csv.reader(csvfile,delimiter='^')
    for row in emp_reader:
        print(row)

##
runfile('D:/document/python_demo/demo_open.py', wdir='D:/document/python_demo')
['lufei', '20', 'leader', 'onepiece', '100']
['namei', '19', 'teacher', 'onepiece', '999']

這時候巡蘸,如果我們的數(shù)據(jù)中奋隶,含有分隔符,我們需要再加上封閉符悦荒,一般都會使用雙引號唯欣,這里使用參數(shù)quotechar指定,默認是雙引號

csv data:
lufei^20^leader^$one^_^piece$^100
namei^19^teacher^onepiece^999

import csv

with open(r'D:\document\python_demo\employee_data.csv') as csvfile:
    emp_reader = csv.reader(csvfile,delimiter='^',quotechar='$')
    for row in emp_reader:
        print(row)


result:
runfile('D:/document/python_demo/demo_open.py', wdir='D:/document/python_demo')
['lufei', '20', 'leader', 'one^_^piece', '100']
['namei', '19', 'teacher', 'onepiece', '999']

3.csv.writer

csv.writer(csvfile, dialect='excel', **fmtparams)Return a writer object responsible for converting the user’s data into delimited strings on the given file-like object. csvfile can be any object with a write() method.

這里的用法都差不多搬味,我們簡單舉個小例子境氢,用官網(wǎng)的例子

with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely |Spam', 'Wonderful Spam']) 

result:
|Spam| |Spam| |Spam| |Spam| |Spam| |Baked Beans|
|Spam| |Lovely ||Spam| |Wonderful Spam|

這里用到了另一個參數(shù):quoting蟀拷,這個參數(shù)是針對quotechar來說的,
quotechar在ETL工具中叫做封閉符萍聊,是為了防止字段內(nèi)容中出現(xiàn)分割符问芬,我們需要區(qū)分到底是分隔符,還是字段內(nèi)容寿桨,所以需要根據(jù)quotechar去判斷此衅;
quoting則是控制在什么情況下使用封閉符,他有幾個選項

csv.QUOTE_ALL #所有字段都添加封閉符
csv.QUOTE_NONNUMERIC #在非數(shù)值字段加封閉符
csv.QUOTE_NONE #所有字段都不加
csv.QUOTE_MINIMAL #只在出現(xiàn)分隔符的字段旁加封閉符亭螟,默認

好了挡鞍,csv的就簡單分享到這里了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末预烙,一起剝皮案震驚了整個濱河市墨微,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌默伍,老刑警劉巖欢嘿,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異也糊,居然都是意外死亡炼蹦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門狸剃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掐隐,“玉大人,你說我怎么就攤上這事钞馁÷鞘。” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵僧凰,是天一觀的道長探颈。 經(jīng)常有香客問我,道長训措,這世上最難降的妖魔是什么伪节? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮绩鸣,結(jié)果婚禮上怀大,老公的妹妹穿的比我還像新娘。我一直安慰自己呀闻,他們只是感情好化借,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捡多,像睡著了一般蓖康。 火紅的嫁衣襯著肌膚如雪铐炫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天钓瞭,我揣著相機與錄音驳遵,去河邊找鬼淫奔。 笑死山涡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的唆迁。 我是一名探鬼主播鸭丛,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唐责!你這毒婦竟也來了鳞溉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤鼠哥,失蹤者是張志新(化名)和其女友劉穎熟菲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朴恳,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡抄罕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了于颖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呆贿。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖森渐,靈堂內(nèi)的尸體忽然破棺而出做入,到底是詐尸還是另有隱情,我是刑警寧澤同衣,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布竟块,位于F島的核電站,受9級特大地震影響耐齐,放射性物質(zhì)發(fā)生泄漏浪秘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一蚪缀、第九天 我趴在偏房一處隱蔽的房頂上張望秫逝。 院中可真熱鬧,春花似錦询枚、人聲如沸违帆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刷后。三九已至的畴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尝胆,已是汗流浹背丧裁。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留含衔,地道東北人煎娇。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像贪染,于是被迫代替她去往敵國和親缓呛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容