Python 将excel中的选择题 导入到word文档中
0x00 昨天,我的老师给我们一个包含600道关于比赛的选择题和判断题的excel文档,要我们整理成指定格式的word文档以后交给他。我看着这六百道题有点发懵,心里突然传来了声音
“Copy!!” " Paste!!!" “Copy!!” " Paste!!!" “Copy!!” " Paste!!!"
身为新时代的CS学生 我甘心于CTRL+c +v吗?
当然不能,所以我决定用python帮我复制粘贴 qwq
部分题如下:
格式如下:
0x01
xlwings库 (对excel进行读写操作)
re库(对word进行读写操作)
Load_data()函数:
将excel第二列的所有数据导入到 groupList 这个列表中
Choose()函数 :
将列表的每一个元素看作一个题(虽然本来就是一道题),然后进行判断 是选择题还是判断题。
如果是选择题,继续进行判断 选择题的括号的位置在哪?因为括号在末尾的选择题,需要将括号移到头部去,括号在题干中间,或者本来就在头部的 就不移动。所以这里就有三个函数 choose_1 2 3 分别代表了三种情况 写入word文档的操作。
import xlwings as xw
import re
def Load_data():
#创建app(一个app可以包含多个excel实例)
app=xw.App()
#创建excel实例
wb = app.books.open(r'D:\nx\tk.xlsx')
#打开指定工作簿
sheet = wb.sheets[0]
for i in range(1,600):
groupList.append(sheet.range(i,2).value)
print("已将excel的数据写入列表!!!")
#验证列表的值
#for i in range(0,9):
#print(str(i+1)+groupList[i])
def Choose_1(Str):
#删除末尾的括号
x=Str.replace('( )', '', 1)
#分割字符串
res=re.split(r"([ABCD])",x)
#前置括号
temp=res[0]
temp="( )"+temp
#将指定分割的字符 合并到其他字符串中
res = ["".join(a) for a in zip(res[1::2],res[2::2])]
#插入题干
res.insert(0,temp)
for b in range(0,len(res)):
word.write(res[b]+"\n")
#print(res[b])
word.write("\n")
def Choose_2(Str_1):
#分割字符串
res=re.split(r"([ABCD])",Str_1)
temp=res[0]
#将指定分割的字符 合并到其他字符串中
res = ["".join(a) for a in zip(res[1::2],res[2::2])]
#插入题干
res.insert(0,temp)
for b in range(0,len(res)):
word.write(res[b]+"\n")
#print(res[b])
word.write("\n")
def Choose_3(Str_2):
#分割字符串
res=re.split(r"([ABCD])",Str_2)
temp=res[0]
#将指定分割的字符 合并到其他字符串中
res = ["".join(a) for a in zip(res[1::2],res[2::2])]
#插入题干
res.insert(0,temp)
for b in range(0,len(res)):
word.write(res[b]+"\n")
#print(res[b])
word.write("\n")
def Think(Str_3):
word.write(Str_3+"\n"+"\n")
def Choose():
n=0
for i in range(0,599):
flag=groupList[i]
flag_1=flag.find('(')
flag_2=flag.find(')')
flag_3=flag.find('A')
flag_4=flag.find('B')
flag_5=flag.find('C')
flag_6=flag.find('D')
#判断出是选择题
if(flag[flag_3+1]=='、'):
#print(str(i+1)+"是选择题啊!!")
#判断出 括号在选择题 题干末尾
if(flag[flag_2+1]=='A' or flag[flag_2+2]=='A' or flag[flag_2+3]=='A'):
Choose_1(flag)
#print(str(i+1)+":括号在题干末尾")
elif(flag[0]=='('):
Choose_2(flag)
#print(str(i+1)+":括号在题干头")
else:
Choose_3(flag)
#print(str(i+1)+":括号在题干中间")
n += 1
print(n)
else:
Think(flag)
#print(str(i+1)+":判断题")
flag=''
print("已完成数据的筛选和写入word文档!!!")
if __name__ == '__main__':
word = open("D:\\nx\\ab.docx", 'w')
groupList = []
#将excel表格的数据写入到列表 groupList 中
Load_data()
#用一个函数来判断是选择题还是判断题,如果是选择题再用一个嵌入If 判断括号位置
Choose()
word.close()