和女票在一起五年了,保留了几年的QQ聊天记录,偶然翻到,感觉很温暖,就想把这些文字做成一本属于我们的书,应该会很有纪念意义。然而qq备份的聊天记录是txt格式,网上找了半天也没有合适的排版工具,上百页的文字一点一点粘贴到word里也不现实,就想到了用万能的python,把txt里的文字写到word里,并进行了简单的排版。书已经做出来了,效果还不错,如果有正在发愁送什么礼物的男生,可以参考下,哈哈~
首先txt中的文字格式是这样的:(文字是我随便写的)
我想把文字写成word,并排版成类似于qq聊天界面一样的格式,让人读的时候就像在和当年的对方聊天一样,很有代入感。如下图所示:
要做成这种,只需要两步:
1 把txt中的文字写入word
2 在word中进行排版
用python处理word,最好用python-docx库:
http://python-docx.readthedocs.io/en/latest/user/install.html
关于如何处理word,库的文档中写的很清楚,可以满足基本的word排版,我的排版比较简单,已经完全够用了。下面是我的处理方法。
首先是把txt中的文字写入word,这里我建两个文件夹,分别存放所有的txt文件和word文件:
把txt写入word的代码如下。由于自动导出的聊天记录里总有一些乱七八糟的文字,这里用到了正则表达式,把它们自动删除。
def chat():
# 正则表达式
pattern3 = re.compile(r'|\[图片\]')
pattern4 = re.compile(r'\(来自手机QQ2012 \[Android\]:语音对讲,高效沟通!\)|\(来自手机QQ2012 \[Android\] \)')
# 文件目录
path_txt = r'G:\TEST\python_text\聊天界面\txt\\'
path_word = r'G:\TEST\python_text\聊天界面\word\\'
pathDir = os.listdir(path_txt)
for childfile in pathDir:
print(childfile)
# 打开文件,按行读取
f = codecs.open(path_txt + childfile, 'rb', 'utf-8', )
newline1 = f.readlines()
f.close()
# 去掉换行符和空行,存入s
s = []
for line in newline1: