python文案处理

需求

(为了方便大家学习,创建了一个学习资源qq群  467604262  欢迎大家一起来探讨)


临近考试,老师大发慈悲,发了考试提纲。但是头疼的是答案和题目分开的。不过没关系,还好我用的是python。 
下面只讲最头疼的两个 
1. 填空题 
2. 选择题

选择题


  • 首先要说明一下:给的word文档 ,而我们只想对其中的文字进行处理 多余的格式跟我们没关系。
  • 要使用程序来处理一个文件的话得找到规律 ,才好用 循环 迭代。 
    • 选择题当然就是 题号后最后的() 但是这里的()每一题可能中间空格多有的少,所以我们要把它换成统一的,这个直接借助 word 查找替换(先替换左边的“(”为你想要的特殊字符串 或者就是是“()”只要与题目中不冲突就行,然后把右边“)”的删掉即可
下面分析答案新式
1.C 2.B 3.C 4.D 5.D 6.B 7.D 8.B 9.A 10.C
1.B 2.D 3.C 4.B 5.D 6.B 7.A 8.A 9.A 10.D
1.D 2.B 3.C 4.D 5.B 6.C 7.A 8.B 9.D 10.C
1.D 2.A 3.D 4.A 5.B 6.D 7.A 8.A 9.D 10.A
1.B 2.A 3.D 4.C 5.D 6.C 7.A 8.B 9.C 10.A
1.A 2.C 3.D 4.A 5.A 6.D 7.B 8.B 9.A 10.D
1.B 2.A 3.C 4.D 5.C 6.B 7.A 8.A 9.D 10.C
1.B 2.C 3.B 4.A 5.C 6.B 7.D 8.A 9.B 10.B
  • 坑爹啊,就不能好好的按序号排吗。这样就是 11-1 12-2 以此类推。
  • 总结以后就是写代码了
import re

newfile=open(r"I:\整合.txt","a")
opfile=open(r"I:\选择题答案.txt",encoding="ANSI").readlines()
//将答案一行一行读出来  每行10个 分别对应1-10  11-20 21-30....
for top in opfile :
    tresult={lt.split(".")[0][-1]:lt.split(".")[1] for lt in top.rstrip().split("\t")}
//通过选择题的头部 题号  每当 题号中有0 就是对应下一组答案 跳出当前循环
//这里使用 match  避免了题干中也有 12、这样的字眼 可以只取第一个。  
    while 1:
        line =opq.readline();    
        print(line);
        //将 字典中的答案根据当前的题号的最后一个数字(因为答案只有0~9)来替换
        if "(  )" in line:
            newfile.write(line.replace('(  )',"("+ tresult[re.match("([\d]*)、",line).group(1)[-1]]+")"))
            if "0" in re.match("([\d]*)、",line).group(1):

                break;
        else:
            newfile.write(line);
   //添加上末尾呗漏掉的题干
last=opq.readline();
while last  !="":
    newfile.write(last);
    last=opq.readline();

newfile.close();
//这里是吧所有的选择题和答案都放在 放在I:\下面
  • 这样就ok 了。

填空题

同上 就不再赘述直接贴代码

import re
anwsermap={line.rstrip().split('.')[0]:line.rstrip().split('.')[1] for line in open(r"I:\填空题答案.txt",encoding="ANSI").readlines() if  "√" in line or "×" in line }

fileaccount=open(r"I:\填空题答案.txt",encoding="ANSI").readlines()
anatache={line.rstrip().split('.')[0]:fileaccount[fileaccount.index(line)+1] for line in fileaccount if "×" in line}

newfile=open(r"I:\整合.txt","a")
for line in open(r"I:\填空题.txt",encoding="ANSI").readlines():
    print(re.match("([\d]*)、",line).group(1));
    newfile.write(line.replace('(    )',"("+anwsermap[re.match("([\d]*)、",line).group(1)]+")"+ ("\n"+anatache[re.match("([\d]*)、",line).group(1)]) if "×" in anwsermap[re.match("([\d]*)、",line).group(1)] else ""))


newfile.close();

猜你喜欢

转载自blog.csdn.net/xixi20200/article/details/108772454