今天和天天弟弟聊天,很有感慨,想把聊天记录保存下来(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
  • 忘记在 if , elif , else , for , while , class ,def 声明末尾添加 冒号( : );
  • 误将 = 当成 == 使用;
  • 错误的缩进
2

UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence

  • 用notepad打开txt文件,把编码格式改成utf-8,再在open()里加上对应的encoding参数
     fr=open(pathr,'r',encoding='utf-8')
  • python是 外部文件编码->内部编码->目标编码,这个报错的意思,是当内部编码转化成 gbk编码(默认)时出错

导出QQ聊天记录并用python处理的更多相关文章

  1. 如何找回QQ聊天记录、语音、图片?

    多图长图预警,本教程适用于 安卓手机 认真仔细看完答案的成功几率翻倍哟! 请各位认真看答案!求您了~ 2020年/4/4日 更新 人民不会忘记,祖国不会忘记,我们不会忘记,先烈不朽. 调整答案顺序,使 ...

  2. 用python做些有意思的事——分析QQ聊天记录——私人订制

    之前,写了这篇文章,用python提取全部群成员的发言时间,并简单做了下分析.先补充一下,针对特定单个群成员(这里以  小小白   为例)消息记录的获取. 代码比较简单,主要是正则表达式的书写.(附: ...

  3. 用python做些有意思的事——分析QQ聊天记录

    ####################################### 已更新续集,戳这里. ######################################## 是这样的,有位学 ...

  4. 谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图

    明天又双叒叕是一年一度的七夕恋爱节了! 又是一波绝好的机会!恩爱秀起来! 购物车清空!礼物送起来!朋友圈晒起来!   等等! 什么?! 你还没准备好七夕礼物么? 但其实你不知道要送啥? 原来又双叒叕要 ...

  5. Python 情人节超强技能 导出微信聊天记录生成词云

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Python实用宝典 PS:如有需要Python学习资料的小伙伴可 ...

  6. 把QQ聊天记录插入数据库中

    最近在做毕设,其中一个环节是分析qq聊天记录,在分析之前需要先把qq聊天记录导出,然后存入数据库中,qq聊天记录导出后是文本文档,导出方式: 1.登录qq后,点击任意一个好友,查看与他的聊天记录,点击 ...

  7. 文本分析实例---QQ聊天记录分析

    对QQ聊天记录进行分析,由于每天产生的聊天记录比較多,所以选取的是从2月份整月的聊天记录数据.分析要产生的结果有三个,聊天记录中发消息的人前top15.统计24小时时间段那个时间段发贴人最多,还有对消 ...

  8. QQ聊天记录分析

    今天我们用R语言来处理一下.我们会用到一下技术:. (1)正则表达式 (2)词频统计 (3)文本可视化 (4)ggplot2绘图 (5)中文分词 一.数据处理 首先我们要讲QQ聊天记录导出成txt文件 ...

  9. QQ聊天记录快速迁移

    QQ聊天记录快速迁移 在工作中大家经常会用到QQ来沟通,但是很多时候在其它设备上登录QQ就无法查看到之前的聊天记录和图片,这是因为电脑上的QQ聊天记录一般都是保存在电脑本地硬盘里,所以我们在换设备登录 ...

随机推荐

  1. 新年好 takoyaki,期待再次与你相见

    一.序 今天是中国农历一年的最后一天,往年都叫年三十,今年没有三十,最后一天是二十九.厨房的柴火味.窗外的鞭炮声还有不远处传来的说笑声,一切都是熟悉味道,新年到了,家乡热闹起来了.平常左邻右舍都是看不 ...

  2. python小兵 面向对象继承super和c3算法

    python多继承 在前面的学习过程中. 我们已经知道了Python中类与类之间可以有继承关系. 当出现了x是一种y的的时候. 就可以使⽤继承关系. 即"is-a" 关系. 在继承 ...

  3. hashmap 实现 相同的key值时,value值叠加效果。

    一,了解一些基础 package com.ohs.demo; /** * * 一.需求是:停止相同的key值,覆盖效果,将重复的value值,叠加起来. * * 二.hash? 什么是hash? * ...

  4. python matplotlib通过 plt.scatter在图上画圆

    import matplotlib.pyplot as plt lena = mpimg.imread(r'C:\Users\Administrator.WIN-QV9HPTF0DHS\Desktop ...

  5. 如何在pyqt中实现亚克力磨砂效果的QLabel

    前言 Windows10 在 UWP 应用中支持亚克力画刷,可以在部件的底部绘制亚克力效果的背景图.下面我们使用 QLabel 来模拟这个磨砂过程. 实现方法 MSDN 文档中介绍了亚克力材料的配方, ...

  6. 如何为Windows服务增加Log4net和EventLog的日志功能。

    一.简介 最近在做一个项目的时候,需要该项目自动启动.自动运行,不需要认为干预.不用说,大家都知道用什么技术,那就是 Windows服务.在以前的Net Framework 平台下,Windows 服 ...

  7. kali切换桌面环境

    感谢大佬:https://blog.csdn.net/tao546377318/article/details/52353018 kali 是基于Debian的发行版,兼容性和软件支持都很好,默认使用 ...

  8. MySQL 日志管理及备份与恢复

    MySQL 日志管理及备份与恢复 1.日志管理 2.备份与恢复 1.日志管理: MySQL的默认日志保存位置为/usr/local/mysql/data 日志开启方式有两种:通过配置文件或者是通过命令 ...

  9. WEB前端开发--2(HTML基础)

    HTML基础 HTML不分大小写 1.HTML概述 HTML(HyperText MarkUp Language)"超文本标记语言",他是制作网页的标准语言 1.1 标签--元素 ...

  10. 使用VMware安装win10虚拟机

    (1)打开VMware: (2)打开左上角的文件,点击新建虚拟机: (3)选择典型,下一步: (4)选择稍后安装操作系统,下一步: (5)选择win10×64,下一步: (6)可随意修改虚拟机名称,位 ...