有这个想法是因为看到了itchat包,做了微信签名词云,微信好友热图,然后就想着那么QQ不是也可以做吗,像QQ群成员地图热图腾讯已经有了,好吧我就把QQ聊天记录做一下,主要也是导出.txt很方便
只是有以下问题:
1.有很多垃圾字符,字符串清洗方案可以再完善;
2.大的群聊天记录内容是否需要多线程来处理大文件。。。。。
3.QQ有类似itchat的包或接口吗嘿嘿嘿
import re
import os
import jieba
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image
import matplotlib.pyplot as plt
# 导出聊天记录.txt
file_path = r'C:\Users\XPS-15\PycharmProjects\PythonProject\owners_group.txt'
with open(file_path, 'r', encoding='utf-8') as fp:
# 读取到列表,方便操作
lines = fp.readlines()
# 去掉群说明(分组,对象)
lines = lines[8:]
# 提取聊天内容文本到长字符串
lines_cp = []
for line in lines:
# 去掉聊天标志项(日期,用户名,QQ号)
if line.startswith('2018'):
continue
# 去掉聊天内容项中的非文本项(空行,链接,发表动态,分享图片,查看按钮,撤回消息,手机号。。。。)
if line.startswith('http') \
or line == '' \
or '发表动态' in line or '分享图片' in line or '查看' in line \
or '@' in line or '撤回了一条' in line\
or line.startswith('1') and len(line) == 11:
continue
else:
lines_cp.append(line)
raw_text = ''.join(lines_cp)
# 去掉图片,表情,空行,以及一系列表情元素:
# 方案一:使用表情元素列表,但是很可能会漏掉
replace_ls = ['[图片]', '[表情]', '\n', '[呲牙]', '[感谢]', '[愉快]', '[撇嘴]', '[切]', '[色色]',
'[太美了]', '[好美]', '[口水]', '[发呆]', '[傻了]', '[得意]', '[好酷]', '[帅呆]',
'[牛逼]', '[流泪]', '[伤心]', '[桑心]', '[闭嘴]', '[不说了]', '[说错话了]', '[抱拳]',
'[哭了]', '[哭哭]', '[大哭]', '[哭死]', '[尴尬]', '[冷汗]', '[汗死]', '[生气]',
'[发怒]', '[气死了]', '[不理你了]', '[调皮]', '[无聊]', '[^_-]', '[捣蛋]', '[古灵精怪]',
'[淘气]', '[呲牙]', '[哈哈]', '[^_^]', '[呵呵]', '[呵:)]', '[难过]', '[伤了]',
'[很伤]', '[想吐]', '[要吐]', '[吐了]', '[惊恐]', '[惊吓]', '[害怕]', '[怕怕]',
'[惊呆啦]', '[吓死了]', '[好吓人]', '[流汗]', '[真汗]', '[好汗]', '[- -!]', '[郁闷]',
'[无语]', '[好紧张]', '[偷笑]', '[嘻嘻]', '[;)]', '[暗喜]'