| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- # -*- coding: utf-8 -*-
- import re
- import sys
- from PySide6.QtWidgets import QMainWindow, QApplication, QMessageBox
- from src.DataFilter import Ui_Form
- category_pattern = re.compile(r'\[类别\]')
- digit_pattern = re.compile(r'\[数字\]')
- english_pattern = re.compile(r'\[字母\]')
- class MyMainForm(QMainWindow, Ui_Form):
- def __init__(self, parent=None):
- super(MyMainForm, self).__init__(parent)
- self.setupUi(self)
- self.submitBtn.clicked.connect(self.submit)
- self.filterCategoryBtn.clicked.connect(self.insertCategoryRegex)
- self.filterDigitBtn.clicked.connect(self.insertDigitRegex)
- self.filterEnglishBtn.clicked.connect(self.insertEnglishRegex)
- def submit(self):
- inputText = self.inputBox.text()
- if len(inputText) == 0:
- QMessageBox.warning(self, "输入提示", "请输入待筛选关键词")
- cnt = 0
- if category_pattern.search(inputText) is not None:
- cnt = cnt + 1
- if digit_pattern.search(inputText) is not None:
- cnt = cnt + 1
- if english_pattern.search(inputText) is not None:
- cnt = cnt + 1
- if cnt > 1:
- QMessageBox.warning(self, "提示", "一次只能使用一种正则筛选项")
- originText = self.originBox.toPlainText()
- if len(originText) == 0:
- QMessageBox.warning(self, "提示", "请输入待筛选关键词")
- categoryText = self.filterCategoryBox.toPlainText()
- if category_pattern.search(inputText) is not None and len(categoryText) == 0:
- QMessageBox.warning(self, "提示", "使用类别筛选,请输入待筛选的类别关键词")
- resultKeyArray = []
- originKeyArray = originText.splitlines()
- if category_pattern.search(inputText) is not None:
- categoryKeyArray = categoryText.splitlines()
- for categoryKey in categoryKeyArray:
- resultKeyArray.extend(self.filter(originKeyArray, inputText, "类别", categoryKey))
- elif digit_pattern.search(inputText) is not None:
- resultKeyArray.extend(self.filter(originKeyArray, inputText, "数字", "0-9"))
- elif english_pattern.search(inputText) is not None:
- resultKeyArray.extend(self.filter(originKeyArray, inputText, "字母", "A-Za-z"))
- else:
- resultKeyArray.extend(self.filter(originKeyArray, inputText))
- self.resultBox.setText("\n".join(resultKeyArray))
- def filter(self, originArray, inputText, oldStr=None, newStr=None):
- resultArray = []
- pattern_str = inputText
- if len(oldStr) > 0 and len(newStr) > 0:
- pattern_str = inputText.replace(oldStr, newStr)
- pattern = re.compile(pattern_str)
- for originKey in originArray:
- if pattern.search(originKey) is not None:
- resultArray.append(originKey)
- return resultArray
- def insertCategoryRegex(self):
- self.setLineEditText("[类别]")
- def insertDigitRegex(self):
- self.setLineEditText("[数字]")
- def insertEnglishRegex(self):
- self.setLineEditText("[字母]")
- def setLineEditText(self, regexText):
- text = self.inputBox.text()
- self.inputBox.setText(text + regexText)
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- myWin = MyMainForm()
- myWin.show()
- sys.exit(app.exec())
|