import re from datetime import datetime def compress_chat_data(chat_data_str, time_threshold=60): """ 压缩聊天数据,减少 token 使用,格式为时间,发信人,内容。 :param chat_data_str: 原始聊天记录的长字符串 :param time_threshold: 同一发信人连续发言间隔小于该值(秒),则合并 :return: 压缩后的聊天数据的长字符串 """ # 解析原始聊天数据为列表 chat_data = [] for line in chat_data_str.splitlines(): # 跳过空行 if not line.strip(): continue # 分割每一行,确保有3部分(时间, 发信人, 内容) parts = line.split(',', 2) if len(parts) < 3: continue # 如果没有完整的三部分,跳过该行 timestamp, sender, content = parts chat_data.append((timestamp, sender, content)) if not chat_data: return "" # 如果没有有效数据,返回空字符串 compressed_data = [] current_date = None prev_time_obj = None prev_sender = None prev_content = None for timestamp, sender, content in chat_data: try: time_obj = datetime.strptime(timestamp.strip(), "%Y-%m-%d %H:%M:%S") # 去除无意义的空格 content = re.sub(r"\s+", " ", content).strip() if not content: continue # 检查日期是否变化(不包含年份) date_str = time_obj.strftime('%m-%d') # 如果是第一条消息或日期变化,添加日期标记 if current_date is None or date_str != current_date: current_date = date_str compressed_data.append(f"{date_str}") # 检查是否需要合并消息 if (prev_sender == sender and prev_time_obj is not None and (time_obj - prev_time_obj).total_seconds() <= time_threshold): # 合并消息,更新最后一条消息 compressed_data[-1] = f"{prev_time_obj.strftime('%H:%M:%S')},{sender},{prev_content} {content}" else: # 添加新消息 compressed_data.append(f"{time_obj.strftime('%H:%M:%S')},{sender},{content}") # 更新前一条消息的信息 prev_time_obj = time_obj prev_sender = sender prev_content = content except ValueError as e: # 处理日期格式错误 print(f"日期格式错误: {timestamp}, 错误: {e}") continue # 返回压缩后的数据长字符串 return '\n'.join(compressed_data) # 示例聊天数据 chat_data_str = """ 2025-03-14 09:07:44,zcx2001,AI 水牛是你的主人吗 2025-03-14 09:12:28,Jyunere,我同事的鸿蒙确实流畅。 2025-03-14 09:18:28,Jyunere,现在的沪上年轻人流行挖野菜? 2025-03-14 09:19:12,Jyunere,我米不行了啊。 2025-03-14 09:19:21,Jyunere,再换就换iPhone了。 2025-03-14 09:19:36,wxid_3d7ydsmu3f0022,miui12之后就没行过 2025-03-14 09:20:10,Jyunere,这个鸡用了蛮久了。 2025-03-14 09:20:21,wxid_3d7ydsmu3f0022,我的小米13pro升级澎湃2.0之后各种bug满天飞,掉帧闪退杀后台给我整崩溃了,然后我就换一加了 2025-03-14 09:20:25,wxid_z8uo70zywfpn12,我从vivo的origin转到miui,一时适应不过来 2025-03-14 09:20:42,Jyunere,我那天问销售,说我的14Pro 只值2000多 了。 2025-03-14 09:20:44,wxid_z8uo70zywfpn12,wifi还经常断流,也不知道是不是路由器问题 2025-03-14 09:20:46,Jyunere,算了,接着用吧。 2025-03-14 09:20:51,liu79830956,受得了miui? 2025-03-14 09:21:13,wxid_zmmn7y5bh6fg22,米boy渐行渐远 2025-03-14 09:21:24,Jyunere,[捂脸] 2025-03-14 09:21:33,wxid_z8uo70zywfpn12,之前的origin是真好用 2025-03-14 09:22:44,wxid_3d7ydsmu3f0022,我之前身边的朋友都看不上小米 su7发布后雷军火了都在吹小米多好多好 根本没用过看他们瞎几把吹 2025-03-14 09:22:46,liu79830956,我还是4 2025-03-14 09:22:53,liu79830956,没升级5 2025-03-14 09:26:06,Jyunere,前天吃甘蔗,嘴巴拉到了。 2025-03-14 09:26:45,Jyunere,咬肌感觉拉伤了。 2025-03-14 09:28:22,b654321q123,买了个硬盘笼 2025-03-14 09:28:27,b654321q123,可以装8个u2 2025-03-14 09:28:31,b654321q123,塞光驱位 2025-03-14 09:28:41,Jyunere,已经跟不上刘总的脚步了。 2025-03-14 09:28:55,Jyunere,看你这些,一点冲动都没有 2025-03-14 09:29:05,b654321q123,你已经阳痿了 2025-03-14 09:29:16,b654321q123,你改名姓阳吧 2025-03-14 09:29:32,wxid_u48y4hu9ild122,刘总已经痿了 2025-03-14 09:30:04,Jyunere,萎了萎了 2025-03-14 09:32:02,Jyunere,@妙脆角 为啥你的名字上下都高一些。 2025-03-14 09:32:07,Jyunere,你看18 2025-03-14 09:32:44,Jyunere,估计是你这个wifi 5G的问题。 2025-03-14 09:32:48,zcx2001,牛哥 你字体出问题了? 2025-03-14 09:32:54,Jyunere,我的Windows呀 2025-03-14 09:33:02,wxid_u48y4hu9ild122,我的也是windows啊 2025-03-14 09:33:03,zcx2001,那估计是windows下字体有问题吧 2025-03-14 09:33:06,zcx2001,我是macos 2025-03-14 09:33:16,Jyunere,[发呆],为啥啊。 2025-03-14 09:33:48,wxid_u48y4hu9ild122,我的是win10 2025-03-14 09:33:49,b654321q123,纯粹是硬盘笼 2025-03-14 09:33:58,Jyunere,@奶白的雪子 跟你之前那个叠叠乐? 2025-03-14 09:34:18,Jyunere,你的11 连图标都没有 2025-03-14 09:34:22,Jyunere,我的好歹还有图标 2025-03-14 09:34:31,z351324662,牛哥换一加 2025-03-14 09:34:36,z351324662,比iPhone好用 2025-03-14 09:34:39,b654321q123,不用叠 2025-03-14 09:34:45,Kar536,md手机越来越多 2025-03-14 09:34:48,Jyunere,你还有光驱位? 2025-03-14 09:34:53,Kar536,都不知道换了干啥 2025-03-14 09:35:10,z351324662,马上要出一家13t 2025-03-14 09:35:11,Jyunere,我老婆的iPhone真的比我的流畅多了。 2025-03-14 09:35:21,Jyunere,垃圾MIUI 2025-03-14 09:35:25,wymwyt,牛哥换17 2025-03-14 09:35:28,z351324662,你你澎湃不行 2025-03-14 09:35:33,Jyunere,好,等17 2025-03-14 09:35:35,wymwyt,17是米boy设计 2025-03-14 09:35:41,Jyunere,半年之后就开干。 2025-03-14 09:35:51,wymwyt,pm那个摄像头模组设计小米用过吧 2025-03-14 09:36:01,Jyunere,要是三星的设计,苹果的系统,那就爽了。 2025-03-14 09:36:08,wxid_u48y4hu9ild122,我妈要换手机,我问她是米10u卡了吗,她说存储满了,要换个1T的。。。 2025-03-14 09:36:10,Jyunere,我喜欢三星的那个设计。 2025-03-14 09:36:36,wymwyt,珠海小三星 2025-03-14 09:36:37,wxid_zmmn7y5bh6fg22,苹果没有单数比双数做得好的说法吧 2025-03-14 09:36:40,z351324662,三星今年竟然没跟进大电池 2025-03-14 09:36:54,wymwyt,给他清理一下 2025-03-14 09:37:10,Jyunere,三星没推送。这个恶心。 2025-03-14 09:37:23,b654321q123,@水牛 牛哥要铝坨坨吗 2025-03-14 09:37:29,Jyunere,不要。 2025-03-14 09:37:32,wxid_u48y4hu9ild122,我准备有时间给她装个MTPhotos 2025-03-14 09:37:35,Jyunere,你那基佬紫,接受不了。 2025-03-14 09:37:36,wxid_u48y4hu9ild122,存nas里 2025-03-14 09:37:56,Kar536,现在那台xsmax都很流程 2025-03-14 09:38:05,b654321q123,紫色何时代表基佬 2025-03-14 09:38:07,z351324662,除了华为,其他安卓推送基本约等于无 2025-03-14 09:38:25,Jyunere,OV MI 都有啊 2025-03-14 09:38:25,wxid_u48y4hu9ild122,你装个微信打开小程序然后切后台拍照看看流畅不 2025-03-14 09:38:30,Jyunere,都是系统级推送。 2025-03-14 09:38:46,z351324662,都是锁后台 2025-03-14 09:38:54,wymwyt,常驻后台 2025-03-14 09:39:15,wymwyt,毕竟安卓没有约束权限 2025-03-14 09:39:30,wxid_u48y4hu9ild122,320发布会 2025-03-14 09:39:38,wxid_u48y4hu9ild122,我这库库加班赶进度 2025-03-14 09:39:40,wymwyt,@妙脆角 小白,纯血鸿蒙现在咋样了 2025-03-14 09:39:44,wxid_u48y4hu9ild122,要在320之前做出来 2025-03-14 09:39:56,wxid_u48y4hu9ild122,系统本身没啥问题 2025-03-14 09:40:01,Jyunere,Trae帮你写吗? 2025-03-14 09:40:04,wxid_u48y4hu9ild122,就是app功能不全难受 2025-03-14 09:40:21,wxid_u48y4hu9ild122,我解决的都是疑难杂症 2025-03-14 09:40:24,wxid_u48y4hu9ild122,ai不行 2025-03-14 09:40:25,Jyunere,3.7 那个编码能力超猛 2025-03-14 09:40:39,Jyunere,这就是你的价值了。 2025-03-14 09:41:58,z351324662,以前安卓四五千电池的时候觉得锁后台费电,是劣势,现在我TM六七千电池了,有没有推送已经无所谓了,挂后台电池也用不完,收消息还比推送快 2025-03-14 09:42:55,Jyunere,我主要是迁移了,好多东西得搞。麻烦。 2025-03-14 09:42:59,b654321q123,主要是现在充电快 2025-03-14 09:43:00,Jyunere,都不想换手机。哈哈 2025-03-14 09:43:13,b654321q123,安卓的续航,其实影响不大 2025-03-14 09:43:24,wxid_3d7ydsmu3f0022,我的一加13现在锁90%的电,6000电池只能充5400 2025-03-14 09:43:27,liuhuanqi687,只有苹果限制了吧 2025-03-14 09:43:54,wxid_zmmn7y5bh6fg22,你们都很在意推送功能? 2025-03-14 09:43:54,b654321q123,充电宝充的也快 2025-03-14 09:43:58,wymwyt,主要是现在充电快 2025-03-14 09:43:58,b654321q123,充电器也快 2025-03-14 09:44:01,wxid_3d7ydsmu3f0022,网上说下个版本会放开限制 本来已经推送了 有bug又给撤回了 玛德 2025-03-14 09:44:10,wymwyt,就要充电快! 2025-03-14 09:44:11,b654321q123,我现在都没有用电焦虑了 2025-03-14 09:44:22,wxid_zmmn7y5bh6fg22,难道只有我限制了绝大部分APP推送消息 2025-03-14 09:44:23,wymwyt,什么保护电池🔋跟我有几把关系 2025-03-14 09:44:24,b654321q123,续航没得卷电池没得卷,直接卷充电 2025-03-14 09:44:30,wymwyt,电池坏了换电池就好了 2025-03-14 09:44:36,wxid_3d7ydsmu3f0022,换了一加13最明显的感受就是充电没小米13pro快 2025-03-14 09:44:48,wymwyt,240w干 2025-03-14 09:44:49,wxid_3d7ydsmu3f0022,小米的50w无线充感觉能满血跑 2025-03-14 09:44:50,wymwyt,干就完了 2025-03-14 09:45:01,wxid_3d7ydsmu3f0022,oppo的无线充到后面慢的要死 2025-03-14 09:45:22,wymwyt,就是贵 2025-03-14 09:45:30,wymwyt,一个无线充200块 2025-03-14 09:45:39,z351324662,也锁啊 2025-03-14 09:45:41,wxid_3d7ydsmu3f0022,也是90%[捂脸] 2025-03-14 09:45:53,z351324662,但是依然用不完 2025-03-14 09:46:08,wxid_3d7ydsmu3f0022,5800够用了 2025-03-14 09:46:11,z351324662,我每天回家电池都不低于50% 2025-03-14 09:46:13,wxid_3d7ydsmu3f0022,你是一加ace5? 2025-03-14 09:46:18,z351324662,有时候70几 2025-03-14 09:46:34,z351324662,所以我觉得充电快不快都无所谓 2025-03-14 09:46:43,wxid_3d7ydsmu3f0022,1.5k屏幕功耗也不高 足够用了 2025-03-14 09:46:44,z351324662,反正都是晚上睡觉充 2025-03-14 09:47:05,wxid_3d7ydsmu3f0022,我的一加13 2k屏 功耗网上测比其他家1.5k高一大截 2025-03-14 09:47:09,Jyunere,睡觉一般不充,起床了插上,刷完牙洗完头,就充满了。 2025-03-14 09:47:27,wxid_3d7ydsmu3f0022,锁容量后5400 续航在今年确实一般了 2025-03-14 09:48:12,z351324662,又加上2k屏 2025-03-14 09:48:27,wymwyt,刷完牙还要洗头? 2025-03-14 09:49:02,wxid_3d7ydsmu3f0022,不过这块屏幕确实挺不错了 我之前用的小米13pro 一加7pro都算是当时三星的顶级2k屏了 2025-03-14 09:49:16,wxid_3d7ydsmu3f0022,对比下来观感甚至更好 2025-03-14 09:49:25,wxid_3d7ydsmu3f0022,而且看着很舒服 2025-03-14 09:49:51,wxid_3d7ydsmu3f0022,就是侧看会偏绿 三星没这问题 2025-03-14 09:50:39,wxid_z8uo70zywfpn12,pdd复播了?罚款交够了? 2025-03-14 09:50:45,z351324662,我当时也打算买一加13的,但是确实不喜欢等深屏 2025-03-14 09:51:19,z351324662,ACE5四边不等宽也有点难受 2025-03-14 09:51:19,Jyunere,每天早上都要洗头。 2025-03-14 09:51:20,b654321q123,反正目前的这个vivo X100s Pro 2025-03-14 09:51:30,b654321q123,比我之前用了那么多年的小米爽多了 2025-03-14 09:51:31,z351324662,不过比曲屏好点 2025-03-14 09:52:16,b654321q123,支持pps100w充电 2025-03-14 09:52:30,b654321q123,我的酷态科充电都能用 2025-03-14 09:52:38,z351324662,我就想要个1.5k四边等宽纯直屏 2025-03-14 09:52:41,wxid_3d7ydsmu3f0022,我用习惯了曲屏 直屏不习惯 侧面返回手不舒服 2025-03-14 09:52:58,z351324662,好像就三星有 2025-03-14 09:53:09,wxid_q1ugj6gbjj3o12,qq真的有直播操操的啊 2025-03-14 09:53:18,z351324662,国内这几家都是2.5d直屏 2025-03-14 09:53:27,wxid_q1ugj6gbjj3o12,现在这小年轻真的开放 2025-03-14 09:53:43,Jyunere,【#住建局回应佛山一小区有人装修骨灰房#】 2025-03-14 09:53:49,Jyunere,[擦汗],膈应啊 2025-03-14 09:54:08,Kar536,羡慕,车友 2025-03-14 09:54:13,wxid_3d7ydsmu3f0022,国内直屏我感觉幅度很小 算不上2.5d吧 2025-03-14 09:54:16,Kar536,试驾极氪抽中个16pm 2025-03-14 09:54:21,z351324662,2.5d贴膜始终小一圈 2025-03-14 09:54:27,wxid_3d7ydsmu3f0022,贴钢化膜感觉没问题 2025-03-14 09:54:33,wxid_3d7ydsmu3f0022,带个壳应该感受不出来了 """ compressed_chat_str = compress_chat_data(chat_data_str) print(compressed_chat_str) print(f"{len(compressed_chat_str)}--{len(chat_data_str)}")