一个批量查询程序
关键字批量查找程序一、功能简介该程序现有功能是:批量查找关键字。该功能适合苦苦挣扎在对比Excel表上内容的同学。如果在Excel表上进行比对,可能比较好的方法就是使用Excel里面的查找功能,那么你将不得不将一个个关键字输入进去运行查找。但是使用这个程序,你能够做到批量查找!换而言之,运用该程序你可以迅速找出两个文档的不同之处,从而进行更好的对比!!!由于开发者的根基尚浅,功能的不完善之处敬请谅解。如果程序的使用需求足够大,开发者将会对程序进行迭代,以求满足更多小伙伴们的更加细致的需求。^_^二、操作流程1. 区分母文档和子文档(附加一个体现功能的小栗子)我们把需要两个需要对比查询的文件分为母文档和子文档。两者的区别在于内容。一般来说,母文档的内容包含子文档。【注意】:两者都是后缀名为“.txt”的文件!!!
举个栗子:
子文档的内容:胡歌,吴彦祖,迪丽热巴,霍建华
母文档的内容:帅气的吴彦祖,单身的胡歌,漂亮的迪丽热巴,剩下的古力娜扎,小建华不配有姓名。
那么使用该程序之后我们可以得到:
子文档在母文档中查找到的关键词数:3
子文档关键词数:4
母文档关键词数:5
子文档在母文档中查找到的关键词:
胡歌,吴彦祖,迪丽热巴
子文档在母文档中没有查找到的关键字:
霍建华
母文档中剩余的关键词为:剩下的古力娜扎,小建华不配有姓名。
2.文件预处理(这个程序最让人痛苦的就是文件的预处理,不过我也没办法,要是能解决我就解决了是吧T_T)
步骤一:创建一个子文档和一个母文档(用记事本生成 “.txt”文件,不能用word文件!!!这该死的officeT_T)
步骤二:将需要对比查重叠的内容复制到子文档和母文档中,注意上文说的子文档和母文档的区别!二者的区别可以这样理解:我们用“舔狗”可以在“我不是一条舔狗”中找到“舔狗”这个词语;但是我们不能用“我不是一条舔狗”在“舔狗”中找到“我不是一条舔狗”这样的七个字的词语,因为他喵的“舔狗”也才只有两个字!!!
步骤三:对两个文档进行处理,我们需要统一“关键字分割符号”!
举个栗子:
file:///C:\Users\jy\AppData\Local\Temp\ksohtml\wpsDF0F.tmp.jpg
我们需要统一把分隔的标点符号统一改为:
或者 中文的逗号“,”
或者 中文的顿号“、”
或者 中文的分号“;”
或者 中文的句号“。”
或者 英文的逗号“,”
或者 英文的分号“;”
或者 英文的句号“.”
如下,修改后为:
file:///C:\Users\jy\AppData\Local\Temp\ksohtml\wpsDF20.tmp.jpg
如果我们的内容是从excel表上复制下来的,像这样:
file:///C:\Users\jy\AppData\Local\Temp\ksohtml\wpsDF21.tmp.jpg
那么OK料到。。。
你只要在“关键字分隔符”选项框选择:“换行符”
就可以了!
接下来的就交给程序吧!
(小伙伴们可以多跑两遍程序就熟悉了^_^)
写在最后:
觉得功能还不够完善,想提一些改进意见的小伙伴可以联系我:13682831689 觉得这个小程序对你有帮助的话有空还可以请我喝杯茶呀。^_^
import easygui as g
def file_deal(way,symbol):
""":file_deal 是根据关键字分隔符号symbol来对文本进行处理,
返回的值是一个列表。"""
with open(way,encoding='utf-8') as f:
list_text=[]#将文本以关键词的形式储存在链表
if symbol == '其他字符':
#如果选择'其他符号',则生成一个选择框,返回分隔符号choose。
choose=g.choicebox('选择文本关键字的分隔符',choices=['中文的逗号: ,','中文的分号: ;','中文的顿号: 、','中文的句号: 。','英文的逗号: ,','英文的分号: ;','英文的句号: .'])
if choose:
chosen=choose
estr=''
for each_line in f:
if '\n' in each_line:
each_line=each_line.replace('\n','')
estr+=each_line
list_text=estr.split(chosen)
else:
pass
elif symbol == '换行符':
for each_line in f :
new_line=each_line.replace('\n','')
if new_line != '' :
list_text.append(new_line)
return list_text
def result(mom_list,son_list):
"""这个函数调用了easygui来展示最终的批量查询结果"""
coincide_list=[] #子表与母表的重叠列表
for each_in_son in son_list:
for each_in_mom in mom_list:
if each_in_son in each_in_mom:
coincide_list.append(each_in_son)
coincide_list_count='子文档在母文件档中查找到的关键词数为:'+str(len(coincide_list))+'\n'
son_list_count='子文档的关键词数为:'+str(len(son_list))+'\n\n'
mom_list_count='母文档的关键词数为:'+str(len(mom_list))+'\n\n'
son_list_over = son_list[:]
for each in coincide_list:
if each in son_list:
son_list_over.remove(each)
mom_list_over = mom_list[:]
for each1 in coincide_list:
for each2 in mom_list:
if each1 in each2:
mom_list_over.remove(each2)
text1='子文档在母文档中查找到的关键词为:\n\n'+str(coincide_list)
text2='\n\n\n\n子文档在母文档中没有查找到的关键词为:\n\n'+str(son_list_over)
text3='\n\n\n\n母文档中剩余的关键词为:\n\n'+str(mom_list_over)
g.textbox('查询结束!!!\n\n'+mom_list_count+son_list_count+coincide_list_count,'结果显示',text=text1+text2+text3)
def run(function):
"""这是一个综合调用各个功能并用easygui和用户互动的函数。
在run函数中,你可以调取不同的功能!
由于该版本是1.0版本,并且需求场景不够清晰,因此目前只有一个功能。>_<"""
if function =='关键字批量查找功能' :
msg=' 关键字批量查找功能\n\n\n' \
'【请确保等待处理的文档已经按照发出的使用说明进行处理!(使用.txt文档)】\n\n\n' \
'【未按照使用说明有可能会得出错误结果!】'
if g.msgbox(msg,'Bulk Search '):
if g.msgbox('接下来请选择“母”文档\n\n\n【注意】母文档一般是 : “待查询”的文件'):
mom_file_way=g.fileopenbox('请选择“母”文档:')
if mom_file_way:
mom_character=g.buttonbox('请选择”母“文档的关键字分割符号\n\n(如果不知道什么是“关键字分割符号”,请关闭程序并打开说明文档。。。)', choices=['换行符', '其他字符'])
if mom_character:
mom_list1=file_deal(mom_file_way,mom_character)
if g.msgbox('接下来请选择“子”文档\n\n\n【注意】子文档一般是 : “用来”查询的文件'):
son_file_way=g.fileopenbox('请选择“子”文档:')
if son_file_way:
son_character=g.buttonbox('请选择“子”文档的关键字分割符号\n\n如果不知道什么是“关键字分割符号”,请关闭程序并打开说明文档。。。', choices=['换行符', '其他字符'])
if son_character:
son_list1=file_deal(son_file_way,son_character)
result(mom_list1,son_list1)
ch=g.buttonbox('请选择需要的功能',choices=['关键字批量查找功能'])
run(ch)
页:
[1]