根据实际情况,如此题库的特征是有横向的答案ABCD也有竖的。所以解决办法:
第一步:数据预处理:横的选项全部变为竖的选项
在这里插入图片描述
D、替换为 ^pD、就会在D选项前换行
第二步:剔除多余的空行
如下图替换操作
**
在这里插入图片描述
第三步:空格标识符替换为空白
在这里插入图片描述

第三步Python处理:也可以别的方式

# coding=utf-8
# -*- coding: UTF-8 -*-
#import xlrd
import xlwt  
from docx import Document
#xlrd:可以对xlsx、xls、xlsm文件进行读操作且效率高 ,xlwt:主要对xls文件进行写操作且效率高,但是不能执行xlsx文件
#本文用的xlwt为1.3.0  python-docx是0.8.8版本 xlwt版本太高会报#错Reason: Incompatible library version: etree.cpython-37m-darwin.so requires version 12.0.0 or later,
def is_number(s):#判断是不是数字
    try:
        float(s)
        return True
    except ValueError:
        pass

    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass

    return False
tiKu = "001.docx"# 预处理好的Word
count = 0
doc = Document(tiKu)
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('sheet1', cell_overwrite_ok=True)
for para in doc.paragraphs:
    # if is_number(para.text[0])==False: #不是数字所以是标题
    #     sheet.write(count, 0, para.text)  # 写标题
    #     count = count + 1
    # else:#第一个字符是数字所以是题目写题目
    if 'A、' in para.text:
        sheet.write(count,1,para.text)
    elif 'B、' in para.text:
        sheet.write(count, 2, para.text)
    elif 'C、' in para.text:
        sheet.write(count, 3, para.text)
    elif 'D、' in para.text:
        sheet.write(count, 4, para.text)
        count = count + 1
    elif 'E、' in para.text:  #对有EF答案的处理
        count = count - 1
        sheet.write(count, 5, para.text)
        count = count + 1
    elif 'F、' in para.text:
        count = count - 1
        sheet.write(count, 6, para.text)
        count = count + 1
    else:
         sheet.write(count, 0, para.text) #写题干
wbk.save('001.xls') #生成的Excel题库

第四步:匹配答案:我的方法是把Word(里有答案)转为Excel再导入MySQL。使用Python模糊查询

import pymysql.cursors
import xlwt
import xlrd
import xlutils.copy
import re
#xlwt只能写入新建的Excel
import pandas as pd
from docx import Document
def mysql(chaxun,i):
    conn = pymysql.connect(
        host='localhost',
        port=3306,
        user='root',
        passwd='haha',
        db='tiku',
        charset='utf8'
    )
    # if conn:
    #     print("连接成功!")

    cursor = conn.cursor()  # 获取游标
    sql = "SELECT right(NAME, 9) FROM tiku2 WHERE name LIKE %s"  # sql语句
    cursor.execute(sql,chaxun)
    result = cursor.fetchall()
    if result!=():
        return result[0]
    else:
        return '1'

if __name__ == '__main__':
    compileX = re.compile(r"[a-zA-Z]")
    i = 0
    Workbook = xlrd.open_workbook('001.xls')
    mySheet2 = Workbook.sheet_by_index(1)
    wt=xlutils.copy.copy(Workbook)
    sheets=wt.get_sheet(1)#读取第二个工作表
    while i<441:
        myCell = mySheet2.cell(i, 1) #i行1列
        chaxun = myCell.value[2:-7]
        a=mysql('%'+chaxun+'%',i)
        if a!='1':
            str = ''.join(a)  # tuple转为字符串
            x = compileX.findall(str)  #匹配字母
            sheets.write(i, 2, x)#写入
        i += 1
        wt.save("001.xls")

处理论述题

# coding=utf-8
# -*- coding: UTF-8 -*-
import xlwt
from docx import Document
#xlrd:可以对xlsx、xls、xlsm文件进行读操作且效率高 ,xlwt:主要对xls文件进行写操作且效率高,但是不能执行xlsx文件
#xlrd:可以对xlsx、xls、xlsm文件进行读操作且效率高 ,xlwt:主要对xls文件进行写操作且效率高,但是不能执行xlsx文件
#本文用的xlwt为1.3.0  python-docx是0.8.8版本 xlwt版本太高会报#错Reason: Incompatible library version: etree.cpython-
def is_number(s):#判断是不是数字
    try:
        float(s)
        return True
    except ValueError:
        pass

    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass

    return False
tiKu = "运营管理岗位资格考试复习题库-论述.docx"#
count = 0
doc = Document(tiKu)
wbk = xlwt.Workbook()
k=2
sheet = wbk.add_sheet('sheet1', cell_overwrite_ok=True)
for para in doc.paragraphs:
    if  para.text[0]in ['1','2','3','4','5','6','7','8','9','0'] : #上一个是题干这一个是题目
        count = count + 1
        sheet.write(count,1,para.text)
        zpx=True#是题目
        k=2
    else:
        sheet.write(count, k, para.text)
        k += 1

        zpx=False#是题干

wbk.save('运营管理岗位资格考试复习题库-论述.xls')
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐