基于PyQT5制作一个敏感词检测工具

  • Post category:Python

基于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类创建了一个应用程序,并运行了它。