一、分析原始文件
答案后边还有解答,但是有的没有解答,每个选项ABCD后有个空格,这样可以给是答案还是解答筛选出来
二
把A空格B空格。。。替换为A:B: ,后原始文件如下图
# 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 = "002.docx"# 预处理好的Word
count = 0
lie=1
deletehang=False
doc = Document(tiKu)
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('sheet1', cell_overwrite_ok=True)
for para in doc.paragraphs:
if count<1495:
if para.text[0]=='A' and para.text[1]==':':
sheet.write(count,1,para.text)
lie+=1
elif para.text[0]=='B' and para.text[1]==':':
sheet.write(count, 2, para.text)
lie+=1
elif para.text[0]=='C' and para.text[1]==':':
sheet.write(count, 3, para.text)
lie+=1
elif para.text[0]=='D' and para.text[1]==':':
sheet.write(count, 4, para.text)
lie+=1
elif para.text[0]=='E' and para.text[1]==':':
sheet.write(count, 5, para.text)
lie+=1
elif para.text[0]=='F' and para.text[1]==':':
sheet.write(count, 6, para.text)
lie+=1
elif para.text[0] == 'G' and para.text[1] == ':':
sheet.write(count, 7, para.text)
lie += 1
elif para.text[0]=='答' and para.text[1]=='案': #写答案,遇到答案
sheet.write(count, 9, para.text)
lie+=1
count = count + 1
deletehang=True #下一个para是答案不要了
# elif is_number(para.text[0]) and ')'in para.text and para.text[1]=='、':
# # 如果第一个是数字并且题干里有()说明是题干#说明是解答或者是题干,如何判断是解答还是题干?
# sheet.write(count, 0, para.text) # 写题干
# lie=1
else:#说明是答案
sheet.write(count, 0, para.text) # 写在答案行
deletehang = False # 下一行是题了
wbk.save('001.xls') #生成的Excel题库
这样处理结果会把解答删掉