当前位置: 首页 > 后端技术 > Python

PyQt5的敏感词检测工具制作,操作者的福音

时间:2023-03-26 13:59:46 Python

设计思路:根据敏感词库文件筛选,检查输入文本是否包含敏感词。从而过滤掉相关的敏感词。[阅读全文]导入应用相关模块。importosimportloggingimportsys导入UI界面相关模块。fromPyQt5.QtWidgetsimportQApplication,QWidget,QVBoxLayout,QTextEdit,QGridLayout,QLineEdit,QPushButton,QFileDialogfromPyQt5.QtGuiimportQIconimportresource这里的资源模块是python生成的.py形式的资源文件。直接将这个文件导入到模块中,可以防止打包时资源文件无法打包的问题。显示resource.py文件的一些代码块。从PyQt5导入QtCoreqt_resource_data=b"\\x00\x00\x2b\x03\\x00\\x01\x6a\xb6\x78\x9c\xed\x5d\x0b\x40\x54\xc5\xfa\x1f\x5c\x95\xf5\\x11\x58\xdd\xb2\x52\xc1\x7c\x84\xa9\xa9\xa5\x29\xec\x6a\x58\x9a\\xf6\xbc\x69\xb7\x6b\x5d\x2b\xb1\xb2\xb4\x7c\x01\x65\xa1\xc0\xee\\xaa\x25\x18\xa4\x66\x6a\xf6\x34\x7a\x78\xcd\x5b\xa6\x66\xb9\x66\\x25\xff\x44\x01\x33\x5f\xf8\xcc\x47\xf8\x7e\xc1\xee\x22\xa0\x28\\xb0\xf3\xff\xcd\x39\x67\xe1\xec\x39\x67\x97\x05\x76\x17\xb0\xf3\\xd3\x8f\xd9\x39\x67\xce\xcc\x37\xdf\x37\xdf\xbc\xce\x9c\x19\x42\\x02\x48\x73\xd2\xab\x57\x2b\xb8\x8d\xc9\xb8\xa6\x84\x2c\x25\x84\\xb4\x6f\xcf\xfb\xcf\x34\x22\x24\x28\x90\x90\x56\xad\x78\x7f\x97\接下来是UI界面部分,这次直接使用UI界面主线程的slot函数来完成业务逻辑,以及没有使用单独的QThread。实现了子线程。definit_ui(self):'''初始化日志管理器'''self.logger=logging.getLogger("敏感词检测工具")self.logger.setLevel(logging.DEBUG)self.setFixedWidth(600)self.setWindowIcon(QIcon(':sens.ico'))self.setWindowTitle('敏感词检测小工具公众号:【Python集中营】')vbox=QVBoxLayout()self.text_=QTextEdit()self.text_.setPlaceholderText('请输入要检测的文本信息...')self.text_.setMaximumHeight(120)self.text_lis=QTextEdit()self.text_lis.setPlaceholderText('文本中的敏感词信息...')self.text_lis.setReadOnly(True)self.text_lis.setMaximumHeight(60)grid=QGridLayout()self.dir_sens=QLineEdit()self.dir_sens.setPlaceholderText('敏感词库路径')self.dir_sens.setReadOnly(True)self.dir_btn=QPushButton()self.dir_btn.setText('获取敏感词汇')self.dir_btn.clicked.connect(self.dir_btn_click)grid.addWidget(self.dir_sens,0,0,1,2)grid.addWidget(self.dir_btn,0,2,1,1)self.lis_btn=QPushButton()self.lis_btn.setText('开始检测')self.lis_btn.clicked.connect(self.search_sens)vbox.addWidget(self.text_)vbox.addWidget(self.text_lis)vbox.addLayout(grid)vbox.addWidget(self.lis_btn)self.setLayout(vbox)剩下的就是四个slot函数部分,主要实现sensitive中所有敏感词的加载word文件出来,最后将敏感词与输入文件进行比较。defdir_btn_click(self):'''选择文件夹:return:'''directory=QFileDialog.getExistingDirectory(self,"selectfolder",self.cwd)self.dir_sens.setText(directory+'/')defget_sens_files(self):'''获取敏感词文件:return:'''file_paths=[]self.logger.info("开始批处理文件路径")list=os.listdir(self.dir_sens.text())foriinrange(0,len(list)):path=os.path.join(self.dir_sens.text(),list[i])如果os.path.isfile(path):file_paths.append(path)self.logger.info("完成批处理文件路径处理")returnfile_pathsdefload_sens(self):'''加载敏感词:return:'''paths=self.get_sens_files()sens=[]self.logger.info("开始loadingsensitivewords")forpathinpaths:self.logger.info("当前加载的文件路径为:"+path)withopen(path,"rb")作为文件:data=file.readlines()datac=[]forstringindata:try:datac.append(string.decode('utf8').replace('\n','').replace('\r',''))except:self.logger.error("File:["+path+"]decodingerror")sens=sens+datacsens=sens+datacself.logger.info("加载完成敏感词”)returnsensdefsearch_sens(self):'''搜索敏感词:return:'''text_lis=""sens=self.load_sens()text=self.text_.toPlainText()forseinsens:ifseintextandsenotintext_lis:text_lis=text_lis+seself.logger.info("Containssensitivewords:"+text_lis)self.text_lis.setText(text_lis)最后直接使用main()函数启动整个应用if__name__=='__main__':app=QApplication(sys.argv)main=SensListen()main.show()sys.exit(app.exec_())以上就是完整的实现过程。将所有代码复制到自己的开发工具中,启动main()函数!直接在界面输入要检测的敏感词,检测到的敏感词会显示在下方的文本框中。我是【Python集中营】,很高兴看到最后,我是专注于Python知识分享的公众号,希望得到大家的关注~【往事精彩】手绘图片生成器:以雪蓉蓉为例一键生成...刚刚出炉的冬奥会吉祥物:冰墩墩,附源码...最美看表插件:tabulate抖音同为课堂点名系统,PyQt5写起来很简单。。。开工啦!给PDF文件批量添加中文水印……大年初二,做了一个windows通知管理器!百度图片下载器2.0gif动态图片生成器,多张图片组合生成一张动态图片...python中几种常见的数据处理操作,一行代码即可完成!过年,用PyQt5生成一对春联...