Python辦公自動化批量處理文件實現(xiàn)示例
引言
要說在工作中最讓人頭疼的就是用同樣的方式處理一堆文件夾中文件,這并不難,但就是繁。所以在遇到機(jī)械式的操作時一定要記得使用Python來合理偷懶!今天我將以處理微博熱搜數(shù)據(jù)來示例如何使用Python批量處理文件夾中的文件,主要將涉及:
- Python批量讀取不同文件夾(???)
- Pandas數(shù)據(jù)處理(??)
- Python操作Markdown文件(?)
需求分析
首先來說明一下需要完成的任務(wù),下面是我們的文件夾結(jié)構(gòu)

因為微博歷史熱搜是沒有辦法去爬的,所以只能寫一個爬蟲每天定時爬取熱搜并保存,所以在我當(dāng)時分析數(shù)據(jù)時使用的就是上圖展示的數(shù)據(jù),每天的數(shù)據(jù)以套娃形式被保存在三級目錄下,并且熱搜是以markdown文件存儲的,打開是這樣??

而我要做的就是將這三個月的微博熱搜數(shù)據(jù)處理成這樣??

這困難嗎,手動的話無非是依次點三下進(jìn)入每天的數(shù)據(jù)文件夾再打開md文件手動復(fù)制粘貼進(jìn)Excel,不就幾萬條數(shù)據(jù),大不了一天不吃飯也能搞定!現(xiàn)在我們來看看如何用Python光速處理。
Python實現(xiàn)
在操作之前我們來思考一下如何使用Python實現(xiàn),其實和手動的過程類似:先讀取全部文件,再對每一天的數(shù)據(jù)處理、保存。所以第一步就是將我們需要的全部文件路徑提取出來,首先導(dǎo)入相關(guān)庫
import pandas as pd import os import glob from pathlib import Path
讀取全部文件名的方法有很多比如使用OS模塊

但是由于我們是多層文件夾,使用OS模塊只能一層一層讀取,要寫多個循環(huán)從而效率不高,所以我們告別os.path使用Pathlib來操作,三行代碼就能搞定,看注釋
from pathlib import Path
p = Path("/Users/liuhuanshuo/Desktop/熱搜數(shù)據(jù)/") #初始化構(gòu)造Path對象
FileList=list(p.glob("**/*.md")) #得到所有的markdown文件`</pre>
來看下結(jié)果

成功讀取了熱搜數(shù)據(jù)下多層文件夾中的全部md文件!但是新的問題來了,每天有兩條熱搜匯總,一個11點一個23點,考慮到會有重合數(shù)據(jù)所以我們在處理之前先進(jìn)行去重,而這就簡單了,不管使用正則表達(dá)式還是按照奇偶位置提取都行,這里我是用lambda表達(dá)式一行代碼搞定
filelist = list(filter(lambda x: str(x).find("23點") >= 0, FileList))現(xiàn)在我們每天就只剩下23點的熱搜數(shù)據(jù),雖然是markdown文件,但是Python依舊能夠輕松處理,我們打開其中一個來看看

打開方式和其他文件類似使用with語句,返回一個list,但是這個list并不能直接為我們所用,第一個元素包含時間,后面每天的熱搜和熱度也不是直接存儲,含有markdown語法中的一些沒用的符號和換行符,而清洗這些數(shù)據(jù)就是常規(guī)操作了,使用下面的代碼即可,主要就是使用正則表達(dá)式,看注釋
with open(file) as f:
lines = f.readlines()
lines = [i.strip() for i in lines] #去除空字符
data = list(filter(None, lines))
del data[0]
data = data[0:100]
date = re.findall('年(.+)2',str(file))[0]
content = data[::2] #奇偶分割
rank = data[1::2]
#提取內(nèi)容與排名
for i in range(len(content)):
content[i] = re.findall('、(.+)',content[i])[0]
for i in range(len(rank)):
rank[i] = re.findall(' (.+)',rank[i])[0]`
最后只需要寫一個循環(huán)遍歷每一天的文件并進(jìn)行清洗,再創(chuàng)建一個DataFrame用于存儲每天的數(shù)據(jù)即可

可以看到,并沒有使用太復(fù)雜的代碼就成功實現(xiàn)了我們的需求!
結(jié)束語
以上就是使用Python再一次解放雙手并成功偷懶的案例,可能讀取Markdown文件在你的日常工作中并用不到,但是通過本案例希望你能學(xué)會如何批量處理文件夾,批量讀取清洗數(shù)據(jù)。更重要的是在你的工作學(xué)習(xí)中,遇到需要重復(fù)操作的任務(wù)時,是否能夠想起使用Python來自動化解決
以上就是Python辦公自動化批量處理文件實現(xiàn)示例的詳細(xì)內(nèi)容,更多關(guān)于Python辦公自動化批量處理文件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實現(xiàn)簡易的學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)簡易的學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作詞向量模型
本文是Python機(jī)器學(xué)習(xí)NLP自然語言處理系列文章,帶大家開啟一段學(xué)習(xí)自然語言處理 (NLP) 的旅程。本篇文章主要學(xué)習(xí)NLP自然語言處理基本操作詞向量模型2021-09-09
Python調(diào)用PC攝像頭實現(xiàn)掃描二維碼
PC攝像機(jī)掃描二維碼的應(yīng)用場景很廣泛,可以應(yīng)用于各種需要快速掃描、識別和管理的場景,本文就來具體講講如何用Python實現(xiàn)這一功能吧2023-05-05
淺談keras使用預(yù)訓(xùn)練模型vgg16分類,損失和準(zhǔn)確度不變
這篇文章主要介紹了淺談keras使用預(yù)訓(xùn)練模型vgg16分類,損失和準(zhǔn)確度不變,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編小編過來看看吧2020-07-07

