1)问题及需求:
qq历史记录导出后,聊天记录间缺少分隔,同时因工作需要,我对每条聊天记录进行了编号,且使用“******”区分:
2)主要涉及了:
1.对txt的读写,2.使用正则表达式匹配出每条老天记录的开始
3)遇到的问题:
读写txt文件时,中文内容的编码。
4)以上问题解决方法:
文件开始部分添加两行utf-8,“# -*- coding: utf-8 -*-”必须写在首行才可起效
5)优化:
在default setting中可以设置Editor-->File and Code Templates-->Python Script,写入:
# -*- coding: utf-8 -*-
这样每次新建Python文件的时候,文件开头都会自动写上这一行
6)代码如下:
# -*- coding: utf-8 -*- coding='UTF-8' import re def rr(filename): #找到有HH:mm:ss格式时间的行(qq中每条信息前都有发言人和时间)对此处修改可寻找特殊的发言人信息 pattern = re.compile('.*? \d{1,2}:\d{1,2}:\d{1,2}',re.S) fr = open(filename,'r') #读取旧的聊天记录文件 lines = fr.readlines() num = 1 #新文件保存位置,名字与旧文件一致 newFilename = 'C:/Users/Administrator/Desktop/' + filename #创建文件 fn = open(newFilename, 'w') fn.close() for line in lines: search = pattern.search(line) if search: #对找到的发言人所在一行内容前加星号和编号,换号符 newLine ='\n'+'************'+ str(num) + ':' +line +'\n' num = num + 1 else: #普通行只在内容后添加换行符 newLine=line + '\n' #逐行写入聊天信息 fw = open(newFilename, 'ab+') fw.writelines(newLine) fw.flush() fw.close() fr.close() #旧文件名。默认位置和该py文件在一个文件夹下 filename =u'qq聊天记录1.txt' rr(filename)