Python实现文章中英文单词统计(用PyQt)

版权声明:转载注明出处 https://blog.csdn.net/J0Han/article/details/82801988

设计GUI界面

使用Python常用的PyQt5库,通过不断调试设计最终效果如图:
在这里插入图片描述
代码如下:

from PyQt5 import QtCore, QtGui, QtWidgets
import pymysql


class Ui_Dialog(QtWidgets.QDialog):
    def __init__(self):
        super(Ui_Dialog,self).__init__()
        self.dict = {}
        self.text_path = 'passage.txt'
        # def setupUi(self, Dialog):
        self.setObjectName("Dialog")
        self.resize(682, 394)
        self.setSizeGripEnabled(False)
        self.setModal(False)
        self.textBrowser = QtWidgets.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(10, 70, 231, 301))
        self.textBrowser.setObjectName("textBrowser")
        self.label = QtWidgets.QLabel(self)
        self.label.setGeometry(QtCore.QRect(260, 10, 161, 41))
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(16)
        self.label.setFont(font)
        self.label.setObjectName("label")

        self.readPassage = QtWidgets.QPushButton(self)
        self.readPassage.setGeometry(QtCore.QRect(290, 70, 93, 28))
        self.readPassage.setObjectName("readPassage")

        self.textBrowser_2 = QtWidgets.QTextBrowser(self)
        self.textBrowser_2.setGeometry(QtCore.QRect(430, 70, 241, 301))
        self.textBrowser_2.setObjectName("textBrowser_2")

        self.analyze = QtWidgets.QPushButton(self)
        self.analyze.setGeometry(QtCore.QRect(290, 120, 93, 28))
        self.analyze.setObjectName("analyze")

        self.save = QtWidgets.QPushButton(self)
        self.save.setGeometry(QtCore.QRect(290, 170, 93, 28))
        self.save.setObjectName("save")

        self.choose = QtWidgets.QPushButton(self)
        self.choose.setGeometry(QtCore.QRect(290, 230, 93, 28))
        self.choose.setObjectName("choose")

        self.retranslateUi(self)
        QtCore.QMetaObject.connectSlotsByName(self)
        self.readPassage.clicked.connect(self.read_passage)
        self.analyze.clicked.connect(self.analyse_passage)
        self.save.clicked.connect(self.db_handle)
        self.choose.clicked.connect(self.open_file)

读取文件

点击打开文件,选择要读取的文件,读取txt文件,将文件中的文章保存至字符串passage中。将其显示在软件左侧的文本框中,实现效果如图:
在这里插入图片描述
实现代码如下:

    def open_file(self):
        filename, filetype = QtWidgets.QFileDialog.getOpenFileName(self,
                                                                    "选取文件",
                                                                    "C:/",
                                                                    "All Files (*);;Text Files (*.txt)"
                                                                   )
        print(filename)
        self.text_path = filename
        with open(self.text_path) as f:
            self.passage = f.read()
        self.textBrowser.clear()
        self.textBrowser.insertPlainText(self.passage)
	 def read_passage(self):
        with open(self.text_path) as f:
            self.passage = f.read()
        self.textBrowser.clear()
        self.textBrowser.insertPlainText(self.passage)

分析文件

通过split()方法对存放文章的passage字符串进行分割提取出所有单词并存放至words列表中,新建一个字典dict,字典中key为单词,values为单词出现次数,遍历words列表,如果字典中没有这个单词则添加至字典dict中,若已有则使之单词所对应的value值+1。这样遍历一遍之后,dict字典里存放了所有单词与其出现次数。将结果显示到右侧文本框。实现效果如下:
在这里插入图片描述
实现代码如下:

    def analyse_passage(self):
        with open(self.text_path) as f:
            words = list(f.read()[:-1].split(' '))
        self.dict = {}
        for word in words:
            if word not in self.dict.keys():
                self.dict[word] = 1
            else:
                self.dict[word] += 1
        self.textBrowser_2.clear()
        for key in self.dict.keys():
            self.textBrowser_2.insertPlainText(key+": 出现%d次\n"%self.dict[key])

保存结果至数据库
实现效果如图:
在这里插入图片描述
在这里插入图片描述
利用pymysql包连接至mysql数据库,执行下面的SQL语句建立数据库以及表:

CREATE DATABASE `words`

CREATE TABLE `words`.`Untitled`  (
  `word` varchar(255) NOT NULL,
  `number` int(0) NOT NULL,
  PRIMARY KEY (`word`)
);

在Python中连接数据库并且执行insert语句:

    def db_handle(self):
        db = pymysql.Connect(host='localhost', port=3306, user='root', passwd='wss10000', db='words', charset='utf8')
        cursor = db.cursor()
        for word in self.dict.keys():
            cursor.execute("INSERT INTO word(word, num) VALUES('%s', '%s')" % (word, str(self.dict[word])))
        db.commit()
        QtWidgets.QMessageBox.about(self, "提示", "保存至数据库成功")
        db.close()

猜你喜欢

转载自blog.csdn.net/J0Han/article/details/82801988