用Python来查询聊天记录

代码

import re

def Start(First_Date, Second_Date, First_Name, Second_Name):
First = re.compile(f'^{First_Date} .* {First_Name}$') # 个人聊天
Second = re.compile(f'^{Second_Date} .* {Second_Name}$') # 群内匹配
First_Count = 0 # 个人聊天条数
Second_Cound = 0 # 群内条数
with open(First_Dic, 'r', encoding='UTF-8') as f:
for i in f:
p = re.match(First, i)
if not p == None:
First_Count += 1 with open(Second_Dic, 'r', encoding='UTF-8') as f:
for i in f:
p = re.match(Second, i)
if not p == None:
Second_Cound += 1
return First_Count, Second_Cound First_Date = r'2020-02-23'#第一聊天记录:检查的日期
Second_Date = r'2020-02-23'#第二聊天记录:检查的日期
First_Name = r'xxx'#群内昵称(备注昵称)
Second_Name = r'yyy'#群内昵称(备注昵称)
First_Dic = r'xxxx.txt'#聊天记录的位置
Second_Dic = r'xxxx.txt'#聊天记录的位置 First_Count,Second_Cound = Start(First_Date,Second_Date,First_Name,Second_Name)
print(f'聊天条数1:{First_Count}')
print(f'聊天条数2:{Second_Cound}')

原理

QQ支持把聊天记录导出为.txt文件,使用正则表达式匹配聊天记录。

使用方法

1.导出聊天记录

打开电脑版QQ,面板左下角 设置> 安全设置> 消息记录> 消息管理器> 找到对象右键导出 .txt

2.修改程序

1)在程序变量First_Date和Second_Date中添加你需要查询的日期(允许正则表达式) First为第一个查询对象,Second为第二个查询对象,下同

2)在程序变量First_Name和Second_Name中添加你需要查询的对象的群昵称(可以查看.txt文件)旧记录中的群昵称随时间变化,比如一天前我的群昵称是aa,即便我现在改了,但是昨天的记录中我的昵称还是aa

3)在程序First_Dic和Second_Dic中添加第1.步导出的.txt文件地址

4)运行程序

项目Github链接

用Python来查询聊天记录的更多相关文章

  1. Python模糊查询本地文件夹去除文件后缀(7行代码)

    Python模糊查询本地文件夹去除文件后缀 import os,re def fuzzy_search(path): word= input('请输入要查询的内容:') for filename in ...

  2. python 数据库查询条件`不等于`

    1.python 数据库查询条件不等于 当在做数据库查询的时候,想根据业务需求进行条件的筛选或过滤, 但是django封装的数据库语句中没有 '不等于' 查询操作. 2.例如:通过以下语句进行'不等于 ...

  3. python代码查询港澳通行证办理进度

    查询港澳通行证办理进度查询的python 3.3代码.利用socket请求相关网站,获得结果后利用正则找出办理进度.其实用urllib代码会更简洁,不过当时在下还不熟悉urllib~ 直接上代码: i ...

  4. python dns查询与DNS传输漏洞查询

    前言: 昨天晚上在看DNS协议,然后想到了 DNS传输漏洞.便想写一个DNS查询与DNS传输漏洞查询 DNS传输漏洞介绍: DNS传输漏洞:若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录 ...

  5. Python如何查询Mysql

    Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据. fetchone(): 该方法获取下一个查询结果集.结果集是一个对象 fetch ...

  6. python django查询12306火车票

    逢年过节,想坐个高铁票,都得上12306去买票,但用过的都会发现,它会把临近站点的也筛出来了.但有时我们压根就不会考虑买到临近站点的. 另一方面,在购票高峰期,有可能你要的出发站到目的站都没有票了,这 ...

  7. 使用python制作查询火车票工具

    使用python脚本实现查询火车票信息的效果图如下: 实现的代码: # coding: utf-8 """命令行火车票查看器 Usage: tickets [-gdtkz ...

  8. python数据库查询转dataframe

    1. 场景描述 python环境下需要从greenplum/postgresql中,获取算法执行的数据,但是从数据库中查询出来是数组格式的,算法无法使用,需要转换为dataframe格式. 2. 解决 ...

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

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

  10. python - ORM 查询

    1. 正常查询: ## 效率低,因为每次查询都是查询表和关联表的所有数据 ret = User.objects.all() for item in ret: print(item.name,item. ...

随机推荐

  1. heygen模型接口 简单使用 java版

    HeyGen - AI Spokesperson Video Creator  官网地址 Create a video (heygen.com) api地址 简介: 公司最近对ai方面业务比较感兴趣了 ...

  2. Java 多线程线程池的工作流程

    1.在创建了线程池后,等待提交过来的任务请求. 2.当调用execute()方法添加一个请求任务时,线程池就会做如下判断: 2.1 如果正在运行的线程数量小于corePoolSize,那么马上创建线程 ...

  3. ArcGIS地图投影与坐标系转换的方法

      本文介绍在ArcMap软件中,对矢量图层或栅格图层进行投影(即将地理坐标系转为投影坐标系)的原理与操作方法.   首先,地理坐标系与投影坐标系最简单的区别就是,地理坐标系用经度.纬度作为空间衡量指 ...

  4. Java11配置maven

    这里假设Java11和maven都正确安装,使用的版本为Java11.maven3.6.1 测试环境变量 Java win + r 打开运行,输入 cmd,打开命令行提示符,输入java --vers ...

  5. Java 位运算的解读 & | ^ ~ << >>

    Java中的位运算包括以下几种: 按位与(&):对应位上,如果两个数都是1,则结果为1,否则为0. int a = 3; // 二进制 0011 int b = 5; // 二进制 0101 ...

  6. Java开发面试--群面专区

    目录 一.群面背景 二.群面流程 三.群面角色 四.群面细节 五.群面礼仪 六.群面话术 七.个人演讲 八.群面题型 群面也称无领导小组~ 候选人们被要求在一个相对自由的环境中展示他们的能力,并在没有 ...

  7. js各种宽高的总结

    1.clientWidth和clientHeight指元素的可视部分宽度和高度,就是padding+content如果没有滚动条,就是设定的宽度和高度 如果有滚动条,就是设定的宽度和高度减去滚动条的宽 ...

  8. CentOS7 Ceph分布式集群部署

    CentOS 7 下安装Ceph-nautilus 本问主要记录在CentOS 7下如何安装Ceph-nautilus,安装过程中遇到的一些问题及解决方法. 1.Ceph实验准备 以下是本次实验所用到 ...

  9. 后缀数组 (SA) 学习笔记

    写得很草率的一篇东西. 后缀排序 #include<bits/stdc++.h> #define il inline using namespace std; il int read() ...

  10. 『STAOI』G - Round 2 半个游记

    很刺激. 2023.3.2 23:17 第一次过审. 2023.3.5 00:02 第一次打回. 原因是背锅人的链接又双叒叕挂错了((( 2023.3.6 21:20 第二次过审. 2023.3.8 ...