def init(self): _func_edit = Function.Edit() filepaths = _func_edit.open_files() if filepaths: file_dic = { filepaths[i]: open(filepaths[i], 'r').read() for i in range(len(filepaths)) } print(time.strftime("%M%S")) text = '' # 把选的文章放在一个text里 for i in file_dic: text += file_dic[i] _func_cal = Function.Calculate() text = Function.strip_html(text) list_sorted = _func_cal.frequency_to_str( text, ' ') # 没有用kmp是因为不需要得到每个值的具体位置,只需要加1即可,所以kmp更麻烦 _translate = QtCore.QCoreApplication.translate for i in range(0, 19): item = self.tableWidget_Freq.item( i, 0) # 需要在设计ui时初始化每个item的值,要不然就报错不知道为啥_(:з」∠)_ item.setText(_translate("Dialog", str(list_sorted[i][0]))) item = self.tableWidget_Freq.item(i, 1) item.setText(_translate("Dialog", str(list_sorted[i][1]))) self.textBrowser.setText(str(list_sorted)) print(time.strftime("%M%S"))
def encoding(self, text): print('EncodingForm >>>>> encoding') _func_cal = Function.Calculate() list_sorted = _func_cal.frequency_to_char(text) nodes = Function.createNodes([item[1] for item in list_sorted]) root = Function.createHuffmanTree(nodes) huff_code = Function.huffmanEncoding(nodes, root) self.tableWidget.setRowCount(len(list_sorted)) for i in range(len(list_sorted)): self.tableWidget.setItem(i, 0, QTableWidgetItem(str(list_sorted[i][0]))) self.tableWidget.setItem(i, 1, QTableWidgetItem(str(list_sorted[i][1]))) self.tableWidget.setItem(i, 2, QTableWidgetItem(str(huff_code[i]))) textcode = '' for word in text: for i in range(len(list_sorted)): if word == list_sorted[i][0]: textcode += str(huff_code[i]) self.textEdit.setText(textcode) print('EncodingForm <<<<< encoding')