main.py 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # -*- coding: utf-8 -*-
  2. import re
  3. import sys
  4. from PySide6.QtWidgets import QMainWindow, QApplication, QMessageBox
  5. from src.DataFilter import Ui_Form
  6. category_pattern = re.compile(r'\[类别\]')
  7. digit_pattern = re.compile(r'\[数字\]')
  8. english_pattern = re.compile(r'\[字母\]')
  9. class MyMainForm(QMainWindow, Ui_Form):
  10. def __init__(self, parent=None):
  11. super(MyMainForm, self).__init__(parent)
  12. self.setupUi(self)
  13. self.submitBtn.clicked.connect(self.submit)
  14. self.filterCategoryBtn.clicked.connect(self.insertCategoryRegex)
  15. self.filterDigitBtn.clicked.connect(self.insertDigitRegex)
  16. self.filterEnglishBtn.clicked.connect(self.insertEnglishRegex)
  17. def submit(self):
  18. inputText = self.inputBox.text()
  19. if len(inputText) == 0:
  20. QMessageBox.warning(self, "输入提示", "请输入待筛选关键词")
  21. cnt = 0
  22. if category_pattern.search(inputText) is not None:
  23. cnt = cnt + 1
  24. if digit_pattern.search(inputText) is not None:
  25. cnt = cnt + 1
  26. if english_pattern.search(inputText) is not None:
  27. cnt = cnt + 1
  28. if cnt > 1:
  29. QMessageBox.warning(self, "提示", "一次只能使用一种正则筛选项")
  30. originText = self.originBox.toPlainText()
  31. if len(originText) == 0:
  32. QMessageBox.warning(self, "提示", "请输入待筛选关键词")
  33. categoryText = self.filterCategoryBox.toPlainText()
  34. if category_pattern.search(inputText) is not None and len(categoryText) == 0:
  35. QMessageBox.warning(self, "提示", "使用类别筛选,请输入待筛选的类别关键词")
  36. resultKeyArray = []
  37. originKeyArray = originText.splitlines()
  38. if category_pattern.search(inputText) is not None:
  39. categoryKeyArray = categoryText.splitlines()
  40. for categoryKey in categoryKeyArray:
  41. resultKeyArray.extend(self.filter(originKeyArray, inputText, "类别", categoryKey))
  42. elif digit_pattern.search(inputText) is not None:
  43. resultKeyArray.extend(self.filter(originKeyArray, inputText, "数字", "0-9"))
  44. elif english_pattern.search(inputText) is not None:
  45. resultKeyArray.extend(self.filter(originKeyArray, inputText, "字母", "A-Za-z"))
  46. else:
  47. resultKeyArray.extend(self.filter(originKeyArray, inputText))
  48. self.resultBox.setText("\n".join(resultKeyArray))
  49. def filter(self, originArray, inputText, oldStr=None, newStr=None):
  50. resultArray = []
  51. pattern_str = inputText
  52. if len(oldStr) > 0 and len(newStr) > 0:
  53. pattern_str = inputText.replace(oldStr, newStr)
  54. pattern = re.compile(pattern_str)
  55. for originKey in originArray:
  56. if pattern.search(originKey) is not None:
  57. resultArray.append(originKey)
  58. return resultArray
  59. def insertCategoryRegex(self):
  60. self.setLineEditText("[类别]")
  61. def insertDigitRegex(self):
  62. self.setLineEditText("[数字]")
  63. def insertEnglishRegex(self):
  64. self.setLineEditText("[字母]")
  65. def setLineEditText(self, regexText):
  66. text = self.inputBox.text()
  67. self.inputBox.setText(text + regexText)
  68. if __name__ == "__main__":
  69. app = QApplication(sys.argv)
  70. myWin = MyMainForm()
  71. myWin.show()
  72. sys.exit(app.exec())