#######################################
已更新續集,戳這里。
########################################
是這樣的,有位學姐呢初學python ,問我怎么處理QQ聊天記錄,當時就說了用正則,也沒去寫,現在閑着(被ajax虐哭。。。先放一放)就來簡單寫一下。
目標,統計近一個月來,QQ群在一天24個時間段的發言量。
Step1:獲取QQ聊天記錄
這個簡單無腦了。。。直接導出消息記錄即可。詳情參考這里。導出時,記得要保存為txt格式,並和python文件放到同一文件夾下(只是為了方便)。
Step2:開始擼碼
環境:python3+pycharm+xlsxwriter
上代碼:
import re import xlsxwriter # 獲取24個時間段----->time_list # 用於之后時間的分段 time_list = [] for i in range(0,24): # 這里的判斷用於將類似的‘8’ 轉化為 ‘08’ 便於和導出數據匹配 if i < 10: i = '0'+str(i) else: i = str(i) time_list.append(i) # 創建EXCEL表格並設置參數 workbook = xlsxwriter.Workbook('這里是表格名稱.xlsx') worksheet = workbook.add_worksheet() worksheet.set_column('A:A', 5) worksheet.set_column('B:B', 10) # 定義一個函數,對每一個時間段進行計數 # times是正則匹配到的 “小時” 數據,在一個列表里面 def everytime(i): num = 0 for time in times: if time == i: num += 1 print(i, '--->', num) # 計數完畢,寫入數據,write參數為:行,列,數據 worksheet.write(int(i), 0, str(i)+"點") worksheet.write(int(i), 1, num) # 打開文件,開始匹配“小時”數據,並計數保存 # 這里記得要轉換編碼為utf-8 with open("這里是txt文件名", encoding='utf-8') as f: data = f.read() # 例如20:50:52,要匹配其中的20 pa = re.compile(r"(\d\d):\d\d:\d\d") times = re.findall(pa, data) for i in time_list: everytime(i) # 記得關閉工作薄 workbook.close() print("處理完畢,快去看看文件夾下面新建的.xlsx文件吧")
代碼比較丑。。。歡迎指正。
輸出如下:
之后那,就要可視化了,嗯,Python的matplotlib對我來說太高大上,那就用EXCEL來吧。。。
Step3:EXCEL可視化
可視化,嗯,其實就是簡單做個折線圖,23333.為了折線圖方便觀察,可以適當調整一下時間的前后順序。
我按照這個順序來的:(將凌晨數據量小的放在兩邊)
最后:
這是加的編程的群,我來猜測一下這個圖吧,不負責的猜測那種。。。。
7點爬起來去上班,越到臨近中午下班越激動,中午飯后來個午睡,開始一下午昏昏欲睡的擼碼工作,終於熬到下班,吃完晚飯開始愉快的擼碼。。。沒錯還是擼碼。。
勤奮的程序員們,學習到23點,漸漸有點虛,嗯,就去睡覺啦,畢竟明天還要上班,還要擼碼。。。(以上內容,開個玩笑而已2333333)