PyQt5的敏感词检测工具制作,运营者的福音
Posted Python 集中营
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyQt5的敏感词检测工具制作,运营者的福音相关的知识,希望对你有一定的参考价值。
设计思路:根据敏感词库文件筛选,查看输入的文本中是否包含敏感词汇。从而过滤出相关的敏感词。
导入应用相关的模块。
import os
import logging
import sys
导入UI界面相关的模块。
from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QTextEdit,QGridLayout,QLineEdit,QPushButton,QFileDialog
from PyQt5.QtGui import QIcon
import resource
这个里面的resource模块,是使用python生成的.py形式的资源文件。直接将这个文件导入模块使用可以防止打包时资源文件不能打包的问题。展示一下部分的resource.py文件的代码块。
from PyQt5 import QtCore
qt_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界面的主线程的槽函数来完成业务逻辑的,并没有使用单独的QThread的子线程来实现。
def init_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)
其余的是四个槽函数部分,主要实现将敏感词文件的所有敏感词加载出来。最后将敏感词与输入的文件进行比对。
def dir_btn_click(self):
\'\'\'
选择文件夹
:return:
\'\'\'
directory = QFileDialog.getExistingDirectory(self, "选取文件夹", self.cwd)
self.dir_sens.setText(directory + \'/\')
def get_sens_files(self):
\'\'\'
获取敏感词文件
:return:
\'\'\'
file_paths = []
self.logger.info("开始批文件路径处理")
list = os.listdir(self.dir_sens.text())
for i in range(0, len(list)):
path = os.path.join(self.dir_sens.text(), list[i])
if os.path.isfile(path):
file_paths.append(path)
self.logger.info("完成批文件路径处理")
return file_paths
def load_sens(self):
\'\'\'
加载敏感词
:return:
\'\'\'
paths = self.get_sens_files()
sens = []
self.logger.info("开始加载敏感词")
for path in paths:
self.logger.info("当前加载的文件路径是:" + path)
with open(path, "rb") as file:
data = file.readlines()
datac = []
for string in data:
try:
datac.append(string.decode(\'utf8\').replace(\'\\n\', \'\').replace(\'\\r\', \'\'))
except:
self.logger.error("文件:[" + path + "]解码出现异常")
sens = sens + datac
sens = sens + datac
self.logger.info("完成加载敏感词")
return sens
def search_sens(self):
\'\'\'
搜索敏感词
:return:
\'\'\'
text_lis = ""
sens = self.load_sens()
text = self.text_.toPlainText()
for se in sens:
if se in text and se not in text_lis:
text_lis = text_lis + se
self.logger.info("包含敏感词:" + 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 知识分享的公众号,希望可以得到您的关注~
【往期精彩】
欢迎关注作者公众号【Python 集中营】,专注于后端编程,每天更新技术干货,不定时分享各类资料!
以上是关于PyQt5的敏感词检测工具制作,运营者的福音的主要内容,如果未能解决你的问题,请参考以下文章