当前位置: 首页 > news >正文

使用python 将world的题库导入某学习软件的模板

本python中使用了模块:

re:用于写正则

python-docx:用于读取worl中的数据

openpyxl:用于将内容写入excel

-----------------------------------------前言-----------------------------------------------

此代码仅可以使用,复杂度较高。若有更好修改可私信,谢。

代码比较简单,有注释,不过多解释。看代码即可。有问题或错误请私聊。

目前仅支持两种格式。

--------------------------------------代码开始--------------------------------------

import docx
import openpyxl
import re#题干:A ,选项A:B,选项B:C,选项C:D,选项D:E
#支持以下类型数据()中内容为备注
#1,这是文件的主体              (以数字开头1-9)
#A,这是选项A                (A选项重要,不要正好匹配A...B...C...D...)
#B这是选项A                     (匹配的是以A-D开头)
# C这是选项A                        (前面允许有空格)
#D这是选项B
#2,这是文件的主体
#A,选项A B,选项B C选项C D选项D                 (空格切割选项注意内容不要有其他)count = 0 #主计数count1 = 0
count2 = 0
count3 = 0
count4 = 0
count5 = 0     #计数器in_world_path=r"/home/user1/桌面/任务三.docx"
content=docx.Document(in_world_path)         #得到内容
wb=openpyxl.Workbook()
ws=wb.activedef first_num(in_text):stat = 0    #状态码pattern = r"^ *[0-9].*"     #正则表达式get_value = re.findall(pattern,in_text)if get_value != []:global count5       #使用全局的计数器count5 += 1    #自增get_key = str("A") + str(count5)    #拼接键ws[get_key] = in_textstat = 1    #写入数据后将转态码置1return stat
#返回状态码1写入0跳过def first_B(in_text):stat = 0    #状态码pattern = r"^ *B.*"   #正则表达式get_value = re.findall(pattern,in_text)if get_value != []:global count1       #使用全局的计数器count1 += 1    #自增get_key = str("C") + str(count1)    #拼接键ws[get_key] = in_textstat = 1    #写入数据后将转态码置1return stat
#返回状态码1写入0跳过def first_C(in_text):stat = 0    #状态码pattern = r"^ *C.*"   #正则表达式get_value = re.findall(pattern,in_text)if get_value != []:global count2       #使用全局的计数器count2 += 1    #自增get_key = str("D") + str(count2)    #拼接键ws[get_key] = in_textstat = 1    #写入数据后将转态码置1return stat
#返回状态码1写入0跳过def first_D(in_text):stat = 0    #状态码pattern = r"^ *D.*"   #正则表达式get_value = re.findall(pattern,in_text)if get_value != []:global count3       #使用全局的计数器count3 += 1   #自增get_key = str("E") + str(count3)    #拼接键ws[get_key] = in_textstat = 1    #写入数据后将转态码置1#print (stat)return stat
#返回状态码1写入0跳过def first_A(in_text):#ex=['1','2','3','4']stat = 0 pattern = r"^ *A.*"get_value = re.findall(pattern,in_text)         #匹配第一行是否为A开头(不包含空格)if get_value != []:global count4count4 += 1pattern = r" *^A.*B.*C.*D.*"rest = re.findall(pattern,in_text)      #判断四个选项是否在一行if rest !=[]:#ex=re.split(r"[A-D]",star)         #[A-D]其中一个字母开始分割ex=re.split(r"\s+",in_text)         #以空格切割num=0           #计数器,统计返回的元素的个数for i in ex:                            #计数开始num = num+1if num != 4:                                #如单行不符合条件则返回列表和对应元素数量print (num)print (ex)get_key= str("B")+str(count4)       #分开处理每行数据   ['12313', '12323123', '2132313123', '123123123']    ws[get_key]=ex[0]                       # 交给原定的方法去处理first_B(ex[1])first_C(ex[2])first_D(ex[3])if rest == []:get_key= str("B")+str(count4)ws[get_key]=in_text                     #正常写入 return statdef main(name):for i in content.paragraphs:global count            #主要的计数器记录行count = count +1tex=i.text#print (tex)w1 = first_num(tex)if w1 == 0 :w2 = first_A(tex)if w2 == 0:w3 = first_B(tex)if w3 == 0:w4 = first_C(tex)if w4 == 0:w5 = first_D(tex)if w5 == 0:#print ("非常规数据"+tex)           #不符合预期passwb.save(name)print (count)if __name__ == "__main__":out_excel_path="ceshi.xlsx"main(name=out_excel_path)

 

 


http://www.mrgr.cn/news/29798.html

相关文章:

  • 蓝桥杯竞赛单片机组备赛【经验帖】
  • 关于指针p有关的3个值
  • Wxml2Canvas小程序将dom转为图片,bug总结
  • rust模式和匹配
  • Flume的安装与使用
  • Android 开启混淆R8编译问题处理
  • 2024年9月python二级易错题和难题大全(附详细解析)(二)
  • MatchRFG:引领MemeCoin潮流,探索无限增长潜力
  • 论文不会写?分享6款AI论文写作免费一键生成网站!
  • Python urllib
  • LinuxC++的UDP服务器和客户端通信
  • 钢索缺陷检测系统源码分享
  • 1×1卷积核【super star 卷积核】
  • 人工智能与机器学习原理精解【21】
  • 图文检索(2):Visual-Linguistic Dependency Encoding for Image-Text Retrieval
  • 计算机网络的性能指标
  • 入门sentinel
  • 利用ClasserLoader来实现jar包加载并调用里面的方法
  • 英飞凌PSoC4000T示例工程
  • 洛谷 P1541 [NOIP2010 提高组] 乌龟棋
  • 机器学习实战—天猫用户重复购买预测
  • 【鸿蒙 HarmonyOS NEXT】组件嵌套滚动:nestedScroll
  • 【重学 MySQL】三十四、加密与解密函数
  • Linux进阶 修改文件所在组
  • 在python中安装HDDM
  • C++_类和对象(下篇)—— 内部类、匿名对象、对象拷贝时的编译器优化