任务: 汉字数字提取,归类将数字和汉字混合的数据拆开,找到相同汉字部分,点击快速成后,将后面的数据累加求和,赋值到新的表格中,导出EXCEL。 ![]() ![]() ste = re.sub("[A-Za-z0-9\!\%\[\]\,\。]", "", Q) 注:将矩阵元素的数字去掉,保留汉字 s3 = [i for i in s2 if(len(str(i))!=0)] 注:将矩阵中元素为空的剔除掉 newEmails = filter(lambda x: x != 'nan', Q3) 注:提出矩阵中指定的元素如:'nan' ste1 = re.sub("\D", "", R3[i]) 注:将矩阵元素的汉字去掉,保留数字 import sys , math import xlwt import re import time import numpy as np import pandas as pd from PyQt5.QtWidgets import QApplication , QMainWindow, QFileDialog, QMessageBox, QTableWidgetItem from PyQt5.QtGui import QPainter,QColor,QFont,QPen from PyQt5.QtCore import QTimer, pyqtSignal, QDateTime, QThread, Qt from Ui_draw import Ui_Drawing
classMyMainWindow(QMainWindow, Ui_Drawing): def__init__(self, parent=None): super(MyMainWindow, self).__init__(parent) self.setupUi(self) self.setWindowTitle("自定义标题") self.analysis_opendata.clicked.connect(self.analysis_opendata_check) self.analysis_opendata.clicked.connect(self.analysis_opendata_show) self.outdata.clicked.connect(self.savefile) self.opendata_name.clicked.connect(self.analysis_name) defanalysis_opendata_check(self): openfile_analysis = QFileDialog.getOpenFileName(self,'选择文件','','Excel files(*.xlsx , *.xls)') global path_openfile_analysis path_openfile_analysis = openfile_analysis[0] defanalysis_opendata_show(self): input_table = pd.read_excel(path_openfile_analysis) input_table_rows = input_table.shape[0] input_table_colunms = input_table.shape[1] self.analysis_tableWidget.setColumnCount(input_table_colunms) self.analysis_tableWidget.setRowCount(input_table_rows) for i in range(input_table_rows): input_table_rows_values = input_table.iloc[[i]] input_table_rows_values_array = np.array(input_table_rows_values) input_table_rows_values_list = input_table_rows_values_array.tolist()[0] for j in range(input_table_colunms): input_table_items_list = input_table_rows_values_list[j] input_table_items = str(input_table_items_list) newItem = QTableWidgetItem(input_table_items) newItem.setTextAlignment(Qt.AlignHCenter|Qt.AlignVCenter) self.analysis_tableWidget.setItem(i, j, newItem) def analysis_name(self): qushuzu_list=[]; SHUJU_list=[]; E=0 input_table = pd.read_excel(path_openfile_analysis) input_table_rows = input_table.shape[0] input_table_colunms = input_table.shape[1] for i in range(input_table_rows): for j in range(input_table_colunms): Q=str(self.analysis_tableWidget.item(i,j).text()) ste = re.sub("[A-Za-z0-9\!\%\[\]\,\。]", "", Q) qushuzu_list.append(ste); SHUJU_list.append(Q); s2=list(set(qushuzu_list)) s3 = [i for i in s2 if(len(str(i))!=0)] Q3 = [i for i in SHUJU_list if(len(str(i))!=0)] newEmails = filter(lambda x: x != 'nan', Q3) R3=list(newEmails) print(R3, len(R3)) print(s3, len(s3) ) self.tableWidget_2.setRowCount(len(s3)) for j in range(len(s3)): input_table_items_list = s3[j] input_table_items = str(input_table_items_list) newItem = QTableWidgetItem(input_table_items) newItem.setTextAlignment(Qt.AlignHCenter|Qt.AlignVCenter) self.tableWidget_2.setItem(j, 0, newItem) E=0 for j in range(len(s3)): for i in range(len(R3)): ste = re.sub("[A-Za-z0-9\!\%\[\]\,\。]", "", R3[i]) if s3[j]==ste: ste1 = re.sub("\D", "", R3[i]) print(ste1) E=E+int(ste1) input_table_items = str(E) newItem = QTableWidgetItem(input_table_items) newItem.setTextAlignment(Qt.AlignHCenter|Qt.AlignVCenter) self.tableWidget_2.setItem(j,1, newItem) E=0 defsavefile(self): if self.tableWidget_2.rowCount()==0: QMessageBox.critical(self, '空数据', '无测量数据,请确定是否导出空数据?') firstname=str(time.strftime("%B%d,%H,%M,%S", time.localtime())) filename, type = QFileDialog.getSaveFileName(self, 'Save File', firstname, ".xls(*.xls)") wbk = xlwt.Workbook() self.sheet = wbk.add_sheet("sheet", cell_overwrite_ok=True) self.add2() if len(filename)==0: return else: wbk.save(filename) defadd2(self): row = 0 col = 0 A=self.tableWidget_2.columnCount() B=self.tableWidget_2.rowCount() for i in range(A): for x in range(B): try: teext = str(self.tableWidget_2.item( row,col).text()) print("保存为空表格", teext) self.sheet.write(row, col, teext) row += 1 except AttributeError: row += 1 row = 0 col += 1 if __name__=="__main__": app = QApplication(sys.argv) myWin = MyMainWindow() myWin.show() sys.exit(app.exec_()) ![]() ![]() 以上内容均为为各类方法的一种,如有更好的可以沟通交流分享。 资料整理于网络: 本文所有内容均来自网络及教科书,我们对有价值的资源进行整理,图片源于网络大部分来源花瓣分享给大家学习,寻找灵感。对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,并不对内容观点负责。版权属于原作者。 ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:蒜苗设计小站,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |