导出QQ聊天记录并用python处理
今天和天天弟弟聊天,很有感慨,想把聊天记录保存下来(QQ),教程如下。
STEP1 从QQ里导出聊天记录
有两个方法导出:(1)打开聊天窗口中的“聊天记录”,右下角是消息管理器,打开,在想要保存记录的群/好友图标上右键→导出。
(2)打开扣扣主面板,点击设置→消息管理器,后面的步骤同上。
注意,可以保存成.bak和.txt,我主要是用txt文件。
STEP2 使用python进行处理
直接导出的txt文本是这样的:
看着有点累,我更喜欢这种简介明了的对话形式:
A:...................
B:...................
那么,就处理吧。代码如下:
- 1 pathr=r"C:\Users\Lenovo\Desktop\20200507.txt"
- 2 fr=open(pathr,'r',encoding='utf-8')#txt编码类型可以在notepad中查看
- 3 fw=open("C:\\Users\\Lenovo\\Desktop\\process20200507.txt",'a')
- 4 flag=-1#0是天天,1是冬冬,2是表情包hhhh
- 5 for line in fr:#不要忘记冒号
- 6 if line.isspace()==True:#如果一行只有表情,导成txt只显示一个空行
- 7 continue#直接读下一行
- 8 if ("2020" in line) and ("天天" in line):#天天说的话
- 9 flag=0
- 10 continue
- 11 elif ("2020" in line) and ("冬冬" in line):#我说的话
- 12 flag=1
- 13 continue
- 14 elif ("[图片]" in line):#单发了一个表情包
- 15 flag=2
- 16 continue
- 17 if flag==0:
- 18 fw.write("天天:"+line+"\n")
- 19 flag=-1
- 20 elif flag==1:
- 21 fw.write("冬冬:"+line+"\n")
- 22 flag=-1
- 23 fr.close()#不要忘记关闭文件
- 24 fw.close()
是不是觉得分支很多,还用了flag辅助QAQ
emm...其实如果用readline()就没有这个问题,当前行如果是“2020-5-7xxxxx冬冬”(说话人信息),那就直接再用readline()去读下一行。但我的spyder和pycharm由于安装不当,使用时存在许多问题,readline()无法直接使用,需要import一下,但在命令行pip install readline,又频频失败。我早就体会过pip失败后修复的困难了,所以再尝试二三后,果断放弃使用这个函数。百度一番,读取文件的一行还可以直接for line in……(这种简单的文件操作还要百度一下,可见我真的不太用心,记不住啊!!)。
使用readline()的代码是这样的:(没跑通,不知道有没有小问题,而且没处理行为空的情况)
- 1 fr=open("C:\\Users\\Lenovo\\Desktop\\20200507.txt",'r',encoding='utf-8')
- 2 fw=open("C:\\Users\\Lenovo\\Desktop\\process20200507.txt",'a')
- 3 while(1):
- 4 line=fr.readline()
- 5 if ("2020" in line) and ("天天" in line):
- 6 line=readline();
- 7 fw.write("天天:"+line+"\n")
- 8 elif ("2020" in line) and ("冬冬" in line):
- 9 line=readline();
- 10 fw.write("冬冬:"+line+"\n")
- 11 fp.close()
- 12 fw.close()
处理后的聊天记录文件是这样的,清爽多了:
-----------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------
以下记录一下这短短的代码编写中遇到的问题和查到的一些东西:(其实以前全都接触过,只是我一直没用心记,所以逼着自己写下来)
- Python文件读写操作
- f=open("xxx.txt","a+")
- #若干操作
- cdy="hhh"
- f.write("JLU"+cdy+"\n")
- f.close()
读写模式:
模式 | 可做操作 | 若文件不存在 | 是否覆盖 | 指针位置 |
---|---|---|---|---|
r | 只能读 | 报错 | - | 0 |
r+ | 可读可写 | 报错 | 否 | 0 |
w | 只能写 | 创建 | 是 | 0 |
w+ | 可写可读 | 创建 | 是 | 0 |
a | 只能写 | 创建 | 否,追加写 | 最后 |
a+ | 可读可写 | 创建 | 否,追加写 | 最后 |
路径:
参考:https://blog.csdn.net/weixin_41811657/article/details/85158003
python读文件需要输入的目录参数,列出以下例子:
path = r"C:\Windows\temp\readme.txt"
path1 = r"c:\windows\temp\readme.txt"
path2 = "c:\\windows\\temp\\readme.txt"
path3 = "c:/windows/temp/readme.txt"
打开文件函数open()中的参数可以是path也可以是path1、path2、path3。
path:"\"为字符串中的特殊字符,加上r后变为原始字符串,则不会对字符串中的"\t"、"\r" 进行字符串转义
path1:大小写不影响windows定位到文件
path2:用一个"\"取消第二个"\"的特殊转义作用,即为"\\"
path3:用正斜杠做目录分隔符也可以转到对应目录,并且在python中path3的方式也省去了反斜杠\转义的烦恼
按行读取文件:
参考:https://www.cnblogs.com/aiyue443/p/9774932.html
(1)通过readline()来进行读取
f = open('xxx/xxx/1.tcl')
line = f.readline()
但是这个只是读取文件的第一行。如何循环使用呢?
while line:
print line, #后面跟,表示忽略换行符。
line = f.readline() # 继续读取下一行
f.close()
(2) 第二种方法
for line in open('xxx/xx/1.tcl'):
print line
一些报错:
1 | SyntaxError: invalid syntax |
|
2 |
UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence |
|
导出QQ聊天记录并用python处理的更多相关文章
- 如何找回QQ聊天记录、语音、图片?
多图长图预警,本教程适用于 安卓手机 认真仔细看完答案的成功几率翻倍哟! 请各位认真看答案!求您了~ 2020年/4/4日 更新 人民不会忘记,祖国不会忘记,我们不会忘记,先烈不朽. 调整答案顺序,使 ...
- 用python做些有意思的事——分析QQ聊天记录——私人订制
之前,写了这篇文章,用python提取全部群成员的发言时间,并简单做了下分析.先补充一下,针对特定单个群成员(这里以 小小白 为例)消息记录的获取. 代码比较简单,主要是正则表达式的书写.(附: ...
- 用python做些有意思的事——分析QQ聊天记录
####################################### 已更新续集,戳这里. ######################################## 是这样的,有位学 ...
- 谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图
明天又双叒叕是一年一度的七夕恋爱节了! 又是一波绝好的机会!恩爱秀起来! 购物车清空!礼物送起来!朋友圈晒起来! 等等! 什么?! 你还没准备好七夕礼物么? 但其实你不知道要送啥? 原来又双叒叕要 ...
- Python 情人节超强技能 导出微信聊天记录生成词云
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Python实用宝典 PS:如有需要Python学习资料的小伙伴可 ...
- 把QQ聊天记录插入数据库中
最近在做毕设,其中一个环节是分析qq聊天记录,在分析之前需要先把qq聊天记录导出,然后存入数据库中,qq聊天记录导出后是文本文档,导出方式: 1.登录qq后,点击任意一个好友,查看与他的聊天记录,点击 ...
- 文本分析实例---QQ聊天记录分析
对QQ聊天记录进行分析,由于每天产生的聊天记录比較多,所以选取的是从2月份整月的聊天记录数据.分析要产生的结果有三个,聊天记录中发消息的人前top15.统计24小时时间段那个时间段发贴人最多,还有对消 ...
- QQ聊天记录分析
今天我们用R语言来处理一下.我们会用到一下技术:. (1)正则表达式 (2)词频统计 (3)文本可视化 (4)ggplot2绘图 (5)中文分词 一.数据处理 首先我们要讲QQ聊天记录导出成txt文件 ...
- QQ聊天记录快速迁移
QQ聊天记录快速迁移 在工作中大家经常会用到QQ来沟通,但是很多时候在其它设备上登录QQ就无法查看到之前的聊天记录和图片,这是因为电脑上的QQ聊天记录一般都是保存在电脑本地硬盘里,所以我们在换设备登录 ...
随机推荐
- 为什么ConcurrentHashMap是线程安全的?
ConcurrentHashMap 是 HashMap 的多线程版本,HashMap 在并发操作时会有各种问题,比如死循环问题.数据覆盖等问题.而这些问题,只要使用 ConcurrentHashMap ...
- Linux 标准输入输出、重定向
一 相关知识 1)默认地,标准的输入为键盘,但是也可以来自文件或管道(pipe |). 2)默认地,标准的输出为终端(terminal),但是也可以重定向到文件,管道或后引号(backquotes ` ...
- Flink 如何通过2PC实现Exactly-once语义 (源码分析)
Flink通过全局快照能保证内部处理的Exactly-once语义 但是端到端的Exactly-once还需要下游数据源配合,常见的通过幂等或者二阶段提交这两种方式保证 这里就来分析一下Sink二阶段 ...
- keepalived的抢占与非抢占模式
目录 一:keepalived的抢占与非抢占模式 1.抢占模式 2.非抢占模式 二:接下来分4种情况说明 三:以上3种,只要级别高就会获取master,与state状态是无关的 一:keepalive ...
- linux判断物理CPU,逻辑CPU和CPU核数
① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量,可以数不重复的 physical id 有几个 ② 逻辑CPU Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. ...
- cobbler最小化安装centos8
centos8 已经发布了GA版本,迫不及待的想尝鲜了,然后现实总是那么残酷,一直安装失败,具体安装步骤如下: 假设cobbler已配置完成. 1.下载centos8 iso镜像 wget http: ...
- Java反射机制及原理
一.概念 java程序运行时动态的创建类并调用类的方法和属性 二.原理简介 Class<?> clz = Class.forName("java.util.ArrayList ...
- 定制博客CSS样式
首先你需要添加页面CSS代码
- 1day漏洞反推技巧实战(3)
代码审计必备技能,github代码对比,写一笔: 搜索某开源组建漏洞,搜索出来某个版本rce: 通过消息得出:存在漏洞版本:1.10.10 ,修复漏洞版本1.10.11 去github寻找apache ...
- Note - 千年食谱颂
其实是兔子收集的各种下饭操作与名菜食谱.( 零·策略篇 多校 NOIP 2021.11.05: 这个真的是,我每次打毛毛虫剖分都是 rush 状态 qwq.像这种 已知代码难度大.不便于调试的 ...