文本转换处理 功能 新增转换字符串中的半角标点

This commit is contained in:
weiye.wang 2024-03-04 20:28:04 +08:00
parent d2f272114f
commit 2464746d17
4 changed files with 31 additions and 15 deletions

View File

@ -43,27 +43,32 @@ class Ui_Form(object):
font = QFont()
font.setBold(True)
self.pushButton_convert.setFont(font)
self.widget = QWidget(Form)
self.widget.setObjectName(u"widget")
self.widget.setGeometry(QRect(320, 120, 97, 74))
self.verticalLayout = QVBoxLayout(self.widget)
self.layoutWidget = QWidget(Form)
self.layoutWidget.setObjectName(u"layoutWidget")
self.layoutWidget.setGeometry(QRect(320, 80, 91, 100))
self.verticalLayout = QVBoxLayout(self.layoutWidget)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.radioButton_mathpix = QRadioButton(self.widget)
self.radioButton_mathpix = QRadioButton(self.layoutWidget)
self.radioButton_mathpix.setObjectName(u"radioButton_mathpix")
self.verticalLayout.addWidget(self.radioButton_mathpix)
self.radioButton_textcircled = QRadioButton(self.widget)
self.radioButton_textcircled = QRadioButton(self.layoutWidget)
self.radioButton_textcircled.setObjectName(u"radioButton_textcircled")
self.verticalLayout.addWidget(self.radioButton_textcircled)
self.radioButton_multiple = QRadioButton(self.widget)
self.radioButton_multiple = QRadioButton(self.layoutWidget)
self.radioButton_multiple.setObjectName(u"radioButton_multiple")
self.verticalLayout.addWidget(self.radioButton_multiple)
self.radioButton_puctuations = QRadioButton(self.layoutWidget)
self.radioButton_puctuations.setObjectName(u"radioButton_puctuations")
self.verticalLayout.addWidget(self.radioButton_puctuations)
self.retranslateUi(Form)
@ -80,5 +85,6 @@ class Ui_Form(object):
self.radioButton_mathpix.setText(QCoreApplication.translate("Form", u"Mathpix", None))
self.radioButton_textcircled.setText(QCoreApplication.translate("Form", u"\u5706\u5708\u6570\u5b57", None))
self.radioButton_multiple.setText(QCoreApplication.translate("Form", u"\u591a\u9009\u8f6c\u586b\u7a7a", None))
self.radioButton_puctuations.setText(QCoreApplication.translate("Form", u"\u6807\u70b9\u8f6c\u534a\u89d2", None))
# retranslateUi

View File

@ -150,6 +150,7 @@ def generate_number_set(string,*thedict): #根据可能含有":"和","的题号
string = re.sub(r"[\n\s]","",string).strip()
while not string[-1] in "0123456789":
string = string[:-1]
string = RefinePunctuations(string)
string_list = string.split(",")
numbers_list = []
for s in string_list:
@ -1385,8 +1386,8 @@ def itemizeProblems(string): #将题号替换为\item
string = "\n".join(itemed_list)
return string
def RefinePuctuations(raw_string):
puctuationsfulltosemi = {" ": " ","": ". ","": ". ","": ", ","": ": ","": "; ","": "(","": ")","": "? ","": "``","": "''", "": "[", "": "]"}
def RefinePunctuations(raw_string):
puctuationsfulltosemi = {" ": " ","": ". ","": ". ","": ", ","": ": ","": "; ","": "(","": ")","": "? ","": "``","": "''", "": "[", "": "]", "": "!"}
string = raw_string.strip()
for s in puctuationsfulltosemi:
string = re.sub(s,puctuationsfulltosemi[s],string) #将部分全角标记替换为半角
@ -2096,7 +2097,7 @@ def makedir(dirpath): #递归创建文件夹
def TitleIDStringtoTupleList(raw_string): #将类json的标题与题号对应变为(标题,题号字符串)的tuple之后组成list
corresponding_list = []
raw_string = RefinePuctuations(raw_string).replace("{","").replace("}","")
raw_string = RefinePunctuations(raw_string).replace("{","").replace("}","")
raw_list = [re.sub(r"(?:(?:\s)|(?:,\s*$))","",t) for t in raw_string.split("\n") if not t.strip() == ""]
for raw_item in raw_list:
item = raw_item.replace('"','').replace(";","")

View File

@ -18,11 +18,13 @@ class MyWindow(QWidget,Ui_Form):
dest_string = re.sub(r"\((\d)\)",lambda x: "\\textcircled{"+x.group(1)+"}",raw_string) #替换所有的小括号包围的单个数字为圆圈包围的
dest_string = re.sub(r"\$\\textcircled\{\\scriptsize\{(\d)\}\}",lambda x: "\\textcircled{"+x.group(1)+"}$",dest_string)
dest_string = re.sub(r"\\textcircled\{\\scriptsize\{(\d)\}\}",lambda x: "\\textcircled{"+x.group(1)+"}",dest_string)
else:
elif self.radioButton_multiple.isChecked():
try:
dest_string = MultiplechoicetoBlankFilling(raw_string)
except:
dest_string = "转换失败"
elif self.radioButton_puctuations.isChecked():
dest_string = RefinePunctuations(raw_string)
self.plainTextEdit_dest.setPlainText(dest_string)

View File

@ -89,13 +89,13 @@
<string>转换</string>
</property>
</widget>
<widget class="QWidget" name="">
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>320</x>
<y>120</y>
<width>97</width>
<height>74</height>
<y>80</y>
<width>91</width>
<height>100</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@ -120,6 +120,13 @@
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_puctuations">
<property name="text">
<string>标点转半角</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>