一键将word题库整理为xlsx

word题库特征:

有判断、单选和多选,有答案和解析,行数长度不一,并且并非一题的解析仅占一行,有时占多行。

好处:每题都有序号,如'1.'、'2.'……'234.'……等等。选择都有 'A.' 'B.' 'C.' 'D.'。答案都标注了"答案"。解析虽然也标注了“解析”,但有些解析是分好几行的。

见代码:

import os

import openpyxl as px

wb = px.Workbook()
ws = wb.active

i = 0
m = 0
path = "/home/oliveryty/下载"

f = open("/home/oliveryty/下载/fl知识竞赛试题库.txt", "r")

for line in f.readlines():
    line = line.replace("   ", "").replace("\n", "")
    #m = i & 5 +1    #这个余数分列法,不适用于行数不规律的情况
    i = i+1
    if "判断题" in line or "单选题" in line or "多选题" in line:
        ws.cell(i, 1).value = line
        tx = line  #题型行时记下这部分的题型
    elif '1.' in line or '2.' in line or '3.' in line or \
       '4.' in line or  '5.' in line or  '6.' in line or  '7.' in line or \
       '8.' in line or  '9.' in line or  '0.' in line:        
        ws.cell(i, 2).value = line        
        ws.cell(i, 1).value = tx  #每行题干都把前面记下的题型填入
        m = i    #如果i遍历到了题干一行,就让m等于i,意思就是让后面的都跟题干保持为一行。

    elif 'A.' in line:
        ws.cell(m, 3).value = line

    elif "B." in line:
        ws.cell(m, 4).value = line

    elif "C." in line:
        ws.cell(m, 5).value = line

    elif "D." in line:
        ws.cell(m, 6).value = line

    elif "答案" in line:
        ws.cell(m, 7).value = line

    else:           #到了解析的处理了
        m = m+1     #m也遍历起来
        #print(ws.cell(m-1, 8).value)  
        if m-1 != 0 and ws.cell(m-1, 8).value == None:  #如果题干行的解析列为空,直接填
            ws.cell(m-1, 8).value = line  
        elif m-1 != 0 and ws.cell(m-1, 8).value != None:
            ws.cell(m-1, 8).value = ws.cell(m-1, 8).value + line 
            #如果解析列为多行,题干行解析列已填入了一行,后续的就跟前面字符串拼接了以后再填入。
        else:
            ws.cell(i, 8).value = line   

wb.save(path + "/fl竞赛.xlsx")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值