Python按关键字提取txt文本并保存到Excel

简单介绍

将会议上语音转成的文字文本按主要关键字提取,例如“上周的KPI”、“没达标的原因”、“遇到的问题”、“解决方法”等等这类的关键词,把关键词后面的对应句子提取并写入数据库中,但我目前还没有公司的数据库权限。就先写到了Excel。有个步骤我觉得有点麻烦,但目前还没找到更好的解决方法…

完整代码

import  re
from re import X
import xlwt
import xlrd
From_file = open('记事1.txt', 'r', encoding='utf-8')		#打开含有文字文本的txt文档
Out_file = open('记事2.txt', 'w', encoding='utf-8')		#新建空白txt文档,把按关键字分成的句子写入
lines = From_file.readline() 	#读取文档内容存进lines
for word in lines.split('上周', lines.count('上周')):  #以‘上周’为分隔符把lines分成一个个word
    Out_file.writelines(word) 	#一行写一个word
    Out_file.write('\n'); 	#行结尾写上换行符
From_file.close()	#关闭含文本的txt文档
Out_file.close()	#关闭空白文档(此时已经把文本内容按第一个关键词进行分割,一行一行地写入txt文档中)

#可能是换行符的原因,导致txt2中的开头有个换行符,影响下一步多个关键词的分割,所以要打开txt2文件查看内容,将txt2中开头以及结尾的换行符去掉
##之后读取txt2文件查看内容
#with open('记事2.txt' , 'r',encoding='UTF-8') as raw:
#    for line in raw:
#        print ([line])

#创建excel文件
book = xlwt.Workbook(encoding='utf-8',style_compression=0)
# 创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格。
sheet = book.add_sheet('Output', cell_overwrite_ok=True)
# 向表中添加数据标题 
sheet.write(0, 0, '上周的KPI')  # 其中的'0-行, 0-列'指定表中的单元,'上周的KPI'是向00列这个单元格写入的内容
sheet.write(0, 1, '没达标的原因') 
sheet.write(0, 2, '遇到的问题') 
sheet.write(0, 3, '解决方法')

#将txt2中分割后的内容按顺序写入Excel
f  =  open ( '记事2.txt' , 'r',encoding='UTF-8' )	#打开txt2
n = 1
for text in f.readlines():
    # text = text.replace('\n','')
    text = re.split("的KPI|,没达标的原因是|,遇到的问题是|,解决方法是",text)
    print(text)
    sheet.write(n,0,text[1])#往表格里写入X坐标
    sheet.write(n,1,text[2])
    sheet.write(n,2,text[3])
    sheet.write(n,3,text[4])
    n = n+1
book.save('Output.xls')  	#保存为xlsx是不能打开的

代码解析

先来看没经过处理的txt文本长这样:

From_file = open('记事1.txt', 'r', encoding='utf-8')

这个txt文件我是直接放在安装编译器的文件夹下面,否则得要自己设置读取文件的路径,我觉得麻烦。例如我编译器用的是VS Code,安装在F盘,所以我就把txt文件复制到【F:\Microsoft VS Code】这个路径下面,后面生成的txt2和Excel都是在这个文件夹下生成的。

for word in lines.split('上周', lines.count('上周')):  #以‘上周’为分隔符把lines分成一个个word
    Out_file.writelines(word) 	#一行写一个word
    Out_file.write('\n'); 	#行结尾写上换行符

开会时汇报要求以特定的关键字开头,以【上周】这两个字为分割点,对每一句固定重复的句式进行分段。拿这个例子来说,第一个人报告的时候说了【上周的KPI情况】以及解决方法等等,第二个人汇报的时候也要说【上周的KPI情况】blabla,分割后的结果就是每一行对应每一个人说的话。
分割后的结果有一点我不太满意,可能是因为换行符的原因导致我在生成新txt文件的时候开头多了一个回车键,这个回车键我也不知道哪个步骤能够让它不要出现在开头,所以只能手动打开并删除,才能执行后面的代码…
Python按关键字提取txt文本并保存到Excel_第1张图片

    text = re.split("的KPI|,没达标的原因是|,遇到的问题是|,解决方法是",text)

对着txt2得出的结果,设想自己想要它存到Excel文档时呈现的效果,分隔符前的内容是直接删除的,我不想把和标题一样的句子以及标点符号一起写进Excel,就把它们进行分割后再循环写入,最后保存得到以下结果:

PS:查看完txt文档或Excel文档后,如要对相关代码进行更改,要记得把已经打开的文档关闭,不然会报错。

你可能感兴趣的:(pandas,openpyxl,xlrd等,python)