鱼C论坛

 找回密码
 立即注册
查看: 2397|回复: 0

[作品展示] 一个批量查询程序

[复制链接]
发表于 2021-10-7 21:07:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
[b]关键字批量查找程序[/b][b]一、功能简介[/b]该程序现有功能是:批量查找关键字该功能适合苦苦挣扎在对比Excel表上内容的同学。如果在Excel表上进行比对,可能比较好的方法就是使用Excel里面的查找功能,那么你将不得不将一个个关键字输入进去运行查找。但是使用这个程序,你能够做到批量查找!换而言之,运用该程序你可以迅速找出两个文档的不同之处,从而进行更好的对比!!!由于开发者的根基尚浅,功能的不完善之处请谅解。如果程序的使用需求足够大,开发者将会对程序进行迭代以求满足更多小伙伴们的更加细致的需求。^_^
[b]二、操作流程[/b][b]1. 区分母文档和子文档(附加一个体现功能的小栗子[/b]我们把需要两个需要对比查询的文件分为母文档子文档。两者的区别在于内容。一般来说,母文档的内容包含子文档。注意:两者都是后缀名为“.txt”的文件!!!
举个栗子

子文档的内容:胡歌,吴彦祖,迪丽热巴,霍建华

母文档的内容:帅气的吴彦祖,单身的胡歌,漂亮的迪丽热巴,剩下的古力娜扎,小建华不配有姓名。

那么使用该程序之后我们可以得到
子文档在母文档中查找到的关键词数:3

子文档关键词数:4
母文档关键词数:5

子文档在母文档中查找到的关键词:
胡歌,吴彦祖,迪丽热巴

子文档在母文档中没有查找到的关键字:
霍建华

母文档中剩余的关键词为:  剩下的古力娜扎,小建华不配有姓名。
[b] [/b][b]2.文件预处理[/b](这个程序最让人痛苦的就是文件的预处理,不过也没办法,要是能解决我就解决了是吧T_T)


步骤一:创建一个子文档和一个母文档(用记事本生成.txt”文件,不能用word文件!!!这该死的office  T_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[7]
                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)


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 11:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表