import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QPushButton, QVBoxLayout, QHBoxLayout, QRadioButton, QButtonGroup
from PyQt5.QtGui import QFont
class KeywordExtractor(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 创建文本框
self.input_edit = QTextEdit(self) # 输入关键词的文本框
self.result_edit = QTextEdit(self) # 显示处理结果的文本框
self.extract_edit = QTextEdit(self) # 输入指定字符的文本框
# 创建单选按钮
self.radio_before = QRadioButton('字符前部分删除', self)
self.radio_after = QRadioButton('字符后部分删除', self)
self.radio_contain = QRadioButton('含字符本身删除', self)
self.radio_before_contain = QRadioButton('含字符及前删除', self)
self.radio_after_contain = QRadioButton('含字符及后删除', self)
# 此处省去样式代码
# 设置窗口标题和大小
self.setWindowTitle('字符灵活删除工具 https://www.jinsuitui.com')
self.resize(1000, 600)
self.setFixedSize(self.size())
# 连接按钮的功能
self.paste_btn.clicked.connect(self.paste_text)
self.copy_btn.clicked.connect(self.copy_text)
self.delete_btn.clicked.connect(self.delete_text)
def paste_text(self):
clipboard = QApplication.clipboard()
self.input_edit.setPlainText(clipboard.text())
def copy_text(self):
clipboard = QApplication.clipboard()
clipboard.setText(self.result_edit.toPlainText())
def delete_text(self):
text = self.input_edit.toPlainText()
keyword = self.extract_edit.toPlainText()
# 逐行处理
lines = text.splitlines()
processed_lines = []
for line in lines:
if self.radio_before.isChecked():
# 删除指定字符前的部分(不包含指定字符本身)
if keyword in line:
result = line.split(keyword, 1)[-1]
result = keyword + result
else:
result = line
elif self.radio_contain.isChecked():
# 删除包含指定字符本身的部分
result = line.replace(keyword, '') if keyword in line else line
elif self.radio_after.isChecked():
# 删除指定字符后的部分(包含指定字符本身)
if keyword in line:
result = line.split(keyword, 1)[0] + keyword
else:
result = line
elif self.radio_before_contain.isChecked():
# 删除指定字符前的部分(包括指定字符本身)
if keyword in line:
result = line.split(keyword, 1)[-1]
else:
result = line
elif self.radio_after_contain.isChecked():
# 删除指定字符后的部分(包括指定字符本身)
if keyword in line:
result = line.split(keyword, 1)[0]
else:
result = line
else:
result = line # 如果没有选择任何单选按钮,则不做任何处理
processed_lines.append(result)
# 将处理后的结果按行显示
self.result_edit.setPlainText('\n'.join(processed_lines))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = KeywordExtractor()
ex.show()
sys.exit(app.exec_())原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。