基于PyQT5制作一个敏感词检测工具
PyQT5是Python中一个非常流行的GUI库,它可以帮助我们快速地创建各种GUI应用程序。本文将介绍如何使用PyQT5制作一个敏感词检测工具,包括如何创建GUI界面、如何读取文本文件、如何进行敏感词检测等。
创建GUI界面
首先,我们需要创建一个GUI界面,用于输入待检测的文本和敏感词列表,并显示检测结果。我们可以使用PyQT5中的QWidget、QLabel、QTextEdit、QLineEdit、QPushButton等控件来创建GUI界面。
下面是一个创建GUI界面的示例:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QTextEdit, QLineEdit, QPushButton
class SensitiveWordDetector(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 500, 400)
self.setWindowTitle('敏感词检测工具')
self.text_label = QLabel('待检测文本:', self)
self.text_label.move(20, 20)
self.text_edit = QTextEdit(self)
self.text_edit.setGeometry(20, 50, 460, 150)
self.word_label = QLabel('敏感词列表:', self)
self.word_label.move(20, 220)
self.word_edit = QLineEdit(self)
self.word_edit.setGeometry(20, 250, 460, 30)
self.detect_button = QPushButton('检测', self)
self.detect_button.setGeometry(200, 300, 100, 30)
self.detect_button.clicked.connect(self.detectSensitiveWord)
self.result_label = QLabel('检测结果:', self)
self.result_label.move(20, 350)
self.result_edit = QTextEdit(self)
self.result_edit.setGeometry(20, 380, 460, 150)
self.show()
在以上示例中,我们创建了一个名为SensitiveWordDetector
的QWidget子类,用于显示GUI界面。在initUI()
方法中,我们设置了窗口的大小和标题,并创建了待检测文本、敏感词列表、检测按钮和检测结果等控件,并设置它们的位置和大小。最后,我们调用show()
方法显示界面。
读取文本文件
接下来,我们需要读取敏感词列表,以便进行敏感词检测。我们可以使用Python中的open()
函数来打开文本文件,并使用readlines()
方法读取文件中的所有行。
下面是一个读取文本文件的示例:
def readSensitiveWords(self, filename):
with open(filename, 'r', encoding='utf-8') as f:
words = [line.strip() for line in f.readlines()]
return words
在以上示例中,我们定义了一个readSensitiveWords()
方法,用于读取敏感词列表。在方法中,我们使用with open()
语句打开文本文件,并使用readlines()
方法读取文件中的所有行。然后,我们使用列表推导将每行敏感词去除空格和换行符,并返回敏感词列表。
敏感词检测
最后,我们需要实现敏感词检测功能。我们可以使用Python中的re
模块来进行正则表达式匹配,以便查找文本中是否包含敏感词。
下面是一个敏感词检测的示例:
import re
def detectSensitiveWord(self):
text = self.text_edit.toPlainText()
words = self.readSensitiveWords('sensitive_words.txt')
pattern = '|'.join(words)
result = re.findall(pattern, text)
self.result_edit.setText('\n'.join(result))
在以上示例中,我们定义了一个detectSensitiveWord()
方法,用于进行敏感词检测。在方法中,我们首先获取待检测的文本敏感词列表,然后使用join()
方法将敏感词列表转换为正则表达式模式。最,我们使用re.findall()
查找文本中是否包含敏感词,并将结果显示在检测结果文本框中。
示例说明
下面是一个完整的示例,演示了如何使用PyQT5制作一个敏感词检测工具:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QTextEdit, QLineEdit, QPushButton
import re
class SensitiveWordDetector(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 500, 400)
self.setWindowTitle('敏感词检测工具')
self.text_label = QLabel('待检测文本:', self)
self.text_label.move(20, 20)
self.text_edit = QTextEdit(self)
self.text_edit.setGeometry(20, 50, 460, 150)
self.word_label = QLabel('敏感词列表:', self)
self.word_label.move(20, 220)
self.word_edit = QLineEdit(self)
self.word_edit.setGeometry(20, 250, 460, 30)
self.detect_button = QPushButton('检测', self)
self.detect_button.setGeometry(200, 300, 100, 30)
self.detect_button.clicked.connect(self.detectSensitiveWord)
self.result_label = QLabel('检测结果:', self)
self.result_label.move(20, 350)
self.result_edit = QTextEdit(self)
self.result_edit.setGeometry(20, 380, 460, 150)
self.show()
def readSensitiveWords(self, filename):
with open(filename, 'r', encoding='utf-8') as f:
words = [line.strip() for line in f.readlines()]
return words
def detectSensitiveWord(self):
text = self.text_edit.toPlainText()
words = self.readSensitiveWords('sensitive_words.txt')
pattern = '|'.join(words)
result = re.findall(pattern, text)
self.result_edit.setText('\n'.join(result))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = SensitiveWordDetector()
sys.exit(app.exec_())
在以上示例中,我们首先创建了一个名为SensitiveWordDetector
的QWidget子类,用于显示GUI界面。然后,我们实现了读取敏感词列表和敏感词检测功能,并将它们与GUI界面进行了关联。最后,我们使用QApplication
类创建了一个应用程序,并运行了它。