亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python爬蟲第6關csv&excel

系統(tǒng) 1573 0

python爬蟲第6關csv&excel_第1張圖片
前面講到json是特殊的字符串。其實,csv也是一種字符串文件的格式,它組織數(shù)據(jù)的語法就是在字符串之間加分隔符——行與行之間是加換行符,同列之間是加逗號分隔。
它可以用任意的文本編輯器打開(如記事本),也可以用Excel打開,還可以通過Excel把文件另存為csv格式(因為Excel支持csv格式文件)。
將我們剛剛寫入的csv文件下載到本地電腦,再用記事本打開,你會看到:
python爬蟲第6關csv&excel_第2張圖片
用Excel打開,則是這樣的:
python爬蟲第6關csv&excel_第3張圖片
發(fā)現(xiàn)了嗎?csv文件里的逗號可以充當分隔同列字符串的作用。
用csv格式存儲數(shù)據(jù),讀寫比較方便,易于實現(xiàn),文件也會比Excel文件小。但csv文件缺少Excel文件本身的很多功能,比如不能嵌入圖像和圖表,不能生成公式。

存儲數(shù)據(jù)的基礎知識
python爬蟲第6關csv&excel_第4張圖片
存儲成csv格式文件和存儲成Excel文件,這兩種不同的存儲方式需要引用的模塊也是不同的。操作csv文件我們需要借助csv模塊;操作Excel文件則需要借助openpyxl模塊。

csv格式文件寫入與讀取。

首先,我們要引用csv模塊。因為Python自帶了csv模塊,所以我們不需要安裝就能引用它。
你是不是會困惑,明明前面csv寫入我們可以直接用open函數(shù)來寫,為什么現(xiàn)在還要先引用csv模塊?答案:直接運用別人寫好的模塊,比我們使用open()函數(shù)來讀寫,語法更簡潔,功能更強大,待會你就能感受到。

            
              import csv
#引用csv模塊。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')
#創(chuàng)建csv文件,我們要先調(diào)用open()函數(shù),傳入?yún)?shù):文件名“demo.csv”、寫入模式“w”、newline=''、encoding='utf-8'。


            
          

加newline=’ '參數(shù)的原因是,可以避免csv文件出現(xiàn)兩倍的行距(就是能避免表格的行與行之間出現(xiàn)空白行)。加encoding=‘utf-8’,可以避免編碼問題導致的報錯或亂碼。
創(chuàng)建完csv文件后,我們要借助csv.writer()函數(shù)來建立一個writer對象。

            
              import csv
#引用csv模塊。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')
#調(diào)用open()函數(shù)打開csv文件,傳入?yún)?shù):文件名“demo.csv”、寫入模式“w”、newline=''、encoding='utf-8'。
writer = csv.writer(csv_file)
# 用csv.writer()函數(shù)創(chuàng)建一個writer對象。

            
          

那怎么往csv文件里寫入新的內(nèi)容呢?答案是——調(diào)用writer對象的writerow()方法。
writer.writerow([‘電影’,‘豆瓣評分’])
#借助writerow()函數(shù)可以在csv文件里寫入一行文字 "電影"和“豆瓣評分”.
提醒:writerow()函數(shù)里,需要放入列表參數(shù),所以我們得把要寫入的內(nèi)容寫成列表。就像[‘電影’,‘豆瓣評分’]。

            
              import csv
#引用csv模塊。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')
#調(diào)用open()函數(shù)打開csv文件,傳入?yún)?shù):文件名“demo.csv”、寫入模式“w”、newline=''、encoding='utf-8'。
writer = csv.writer(csv_file)
# 用csv.writer()函數(shù)創(chuàng)建一個writer對象。
writer.writerow(['電影','豆瓣評分'])
#調(diào)用writer對象的writerow()方法,可以在csv文件里寫入一行文字 “電影”和“豆瓣評分”。
writer.writerow(['銀河護衛(wèi)隊','8.0'])
#在csv文件里寫入一行文字 “銀河護衛(wèi)隊”和“8.0”。
writer.writerow(['復仇者聯(lián)盟','8.1'])
#在csv文件里寫入一行文字 “復仇者聯(lián)盟”和“8.1”。
csv_file.close()
#寫入完成后,關閉文件就大功告成啦!


            
          

Mac的編碼方式是‘gbk’
用csv模塊寫入數(shù)據(jù)這一個知識點我們已經(jīng)清楚。接下來我們可以繼續(xù)學習怎么讀取csv文件的數(shù)據(jù)。

            
              import csv
csv_file=open('demo.csv','r',newline='',encoding='gbk')
reader=csv.reader(csv_file)
for row in reader:
    print(row)
    

            
          

第1、2行代碼:導入csv模塊。用open()打開“demo.csv”文件,‘r’是reader讀取模式,newline=’'是避免出現(xiàn)兩倍行距。encoding='utf-8’能避免編碼問題導致的報錯或亂碼。
第3行代碼:用csv.reader()函數(shù)創(chuàng)建一個reader對象。
第4、5行代碼:用for循環(huán)遍歷reader對象的每一行。打印row,就能讀取出“demo.csv”文件里的內(nèi)容。
補充一點:csv模塊本身還有很多函數(shù)和方法,附上csv模塊官方文檔鏈接:
https://yiyibooks.cn/xx/python_352/library/csv.html#module-csv

Excel寫入與讀取

一個Excel文檔也稱為一個工作薄(workbook),每個工作薄里可以有多個工作表(wordsheet),當前打開的工作表又叫活動表。
每個工作表里有行和列,特定的行與列相交的方格稱為單元格(cell)。比如上圖第A列和第1行相交的方格我們可以直接表示為A1單元格。

            
              mport openpyxl 
#引用openpyxl 。
wb = openpyxl.Workbook()
#利用openpyxl.Workbook()函數(shù)創(chuàng)建新的workbook(工作薄)對象,就是創(chuàng)建新的空的Excel文件。

            
          

創(chuàng)建完新的工作薄后,還得獲取工作表。不然程序會懵逼,不知道要把內(nèi)容寫入哪張工作表里。

            
              sheet = wb.active
#wb.active就是獲取這個工作薄的活動表,通常就是第一個工作表。
sheet.title = 'new title'
#可以用.title給工作表重命名。現(xiàn)在第一個工作表的名稱就會由原來默認的“sheet1”改為"new title"。

            
          

添加完工作表,我們就能來操作單元格,往單元格里寫入內(nèi)容。

            
              sheet['A1'] = '漫威宇宙' 
#把'漫威宇宙'賦值給第一個工作表的A1單元格,就是往A1的單元格中寫入了'漫威宇宙'。

            
          

如果我們想往工作表里寫入一行內(nèi)容的話,就得用到append函數(shù)。

            
              row = ['美國隊長','鋼鐵俠','蜘蛛俠']
#把我們想寫入的一行內(nèi)容寫成列表,賦值給row。
sheet.append(row)
#用sheet.append()就能往表格里添加這一行文字。

            
          

如果我們想要一次性寫入的不止一行,而是多行內(nèi)容,又該怎么辦?

            
              rows = [['美國隊長','鋼鐵俠','蜘蛛俠'],['是','漫威','宇宙', '經(jīng)典','人物']]
#先把要寫入的多行內(nèi)容寫成列表,再放進大列表里,賦值給rows。
for i in rows:
    sheet.append(i)
#遍歷rows,同時把遍歷的內(nèi)容添加到表格里,這樣就實現(xiàn)了多行寫入。
print(rows)
#打印rows

            
          

成功寫入后,我們千萬要記得保存這個Excel文件,不然就白寫啦!

            
              wb.save('Marvel.xlsx')
#保存新建的Excel文件,并命名為“Marvel.xlsx”

            
          

這樣,Excel文件寫入的代碼我們就寫好了

            
              import openpyxl

wb=openpyxl.Workbook()
sheet=wb.active
sheet.title='new title'
sheet['A1']='漫威宇宙'
rows=[['美國隊長','鋼鐵俠','蜘蛛俠'],['是','漫威','宇宙','經(jīng)典','的','人物']]
for i in rows:
        sheet.append(i)
print(rows)
wb.save('Marvel.xlsx')


            
          

Excel文件的讀取

            
              import openpyxl 
#寫入的代碼:
wb = openpyxl.Workbook() 
sheet = wb.active
sheet.title = 'new title'
sheet['A1'] = '漫威宇宙'
rows = [['美國隊長','鋼鐵俠','蜘蛛俠','雷神'],['是','漫威','宇宙', '經(jīng)典','人物']]
for i in rows:
    sheet.append(i)
print(rows)
wb.save('Marvel.xlsx')

#讀取的代碼:
wb = openpyxl.load_workbook('Marvel.xlsx')
sheet = wb['new title']
sheetname = wb.sheetnames
print(sheetname)
A1_cell = sheet['A1']
A1_value = A1_cell.value
print(A1_value)


            
          

第14行代碼:調(diào)用openpyxl.load_workbook()函數(shù),打開“Marvel.xlsx”文件。
第15行代碼:獲取“Marvel.xlsx”工作薄中名為“new title”的工作表。
第16、17行代碼:sheetnames是用來獲取工作薄所有工作表的名字的。如果你不知道工作薄到底有幾個工作表,就可以把工作表的名字都打印出來。
第18-20行代碼:把“new title”工作表中A1單元格賦值給A1_cell,再利用單元格value屬性,就能打印出A1單元格的值。
openpyxl模塊的官方文檔:
https://openpyxl.readthedocs.io/en/stable/

python爬蟲第6關csv&excel_第5張圖片


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本特黄一级午夜剧场毛片 | 久久精品国产亚洲片 | 中文字幕第一页国产 | 久久久无码精品亚洲日韩按摩 | 在线日本妇人成熟免费观看 | 伊人网色 | 欧美成人午夜影院 | 欧美国产亚洲一区二区三区 | 欧美色99| 中文字幕不卡免费高清视频 | 国产精品一区二区三区免费 | 妖精www视频在线观看高清 | 国产精品亚洲精品一区二区三区 | www.免费视频| 男女羞羞视频免费观看 | 久久久麻豆 | www.黄色片| 米奇7777狠狠狠狠视频影院 | 天天爽夜夜操 | www.四虎网站| 美国成人a免费毛片 | 一级特黄牲大片免费视频 | 四虎免费在线播放 | 天天干天天操天天 | 91亚洲在线 | 免费一看一级毛片全播放 | jizz成熟丰满中国妇女 | 操美女的穴| 久久夜色tv网站免费影院 | jizz女人| 久久久久久久国产视频 | 中文字幕久久亚洲一区 | 亚洲婷婷综合色高清在线 | 亚洲国产精品成人综合色在线婷婷 | 久久这里只精品热免费99 | 色伊人网| 波多结衣一区二区三区 | 九九精品热 | 夜夜艹日日艹 | 精品在线观看一区 | 欧美日韩国产58香蕉在线视频 |