52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
import os,re
|
|
import win32clipboard as wc
|
|
import win32con
|
|
|
|
# 获取剪切板内容
|
|
def getCopy():
|
|
wc.OpenClipboard()
|
|
t = wc.GetClipboardData(win32con.CF_UNICODETEXT)
|
|
wc.CloseClipboard()
|
|
return t
|
|
|
|
# 写入剪切板内容
|
|
def setCopy(str):
|
|
wc.OpenClipboard()
|
|
wc.EmptyClipboard()
|
|
wc.SetClipboardData(win32con.CF_UNICODETEXT, str)
|
|
wc.CloseClipboard()
|
|
|
|
def choicetoblankfilling(data):
|
|
choiceslist = re.findall(r"(\\(?:two|four|one)ch[\s\S]*?)(?:\n[\s]*\\item|$)",data)
|
|
for rawchoice in choiceslist:
|
|
leftcount = 0
|
|
rightcount = 0
|
|
choicestring = rawchoice
|
|
contentlist = [""]
|
|
while len(choicestring) > 0:
|
|
char = choicestring[0]
|
|
if char == "{":
|
|
leftcount += 1
|
|
if char == "}":
|
|
rightcount += 1
|
|
if leftcount > rightcount:
|
|
contentlist[-1]+=char
|
|
if leftcount == rightcount and contentlist[-1] != "":
|
|
contentlist[-1] += "}"
|
|
contentlist.append("")
|
|
choicestring = choicestring[1:]
|
|
contentlist = [c[1:-1] for c in contentlist if c.strip()!=""]
|
|
repstring = ""
|
|
for t in range(len(contentlist)):
|
|
repstring += r"\textcircled{"+str(t+1)+"} "+contentlist[t]+"; "
|
|
repstring= repstring[:-2]+"."
|
|
data = data.replace(rawchoice,repstring)
|
|
data = re.sub(r"bracket\{\d*?\}\.*",r"blank{50}.\\\\",data)
|
|
return data
|
|
|
|
data = getCopy()
|
|
modified_data = choicetoblankfilling(data)
|
|
setCopy(modified_data)
|
|
|
|
with open("临时文件/outputfile.txt","w",encoding = "utf8") as f:
|
|
f.write(modified_data) |