前言
上一节已经爬取了形策题库,为了方便自动答题时进行题目答案匹配,本节用python将 问题-选项-答案 格式的txt文档转换为{“wenti”:“daan”,“wenti”:“daan”}的键值对格式。
另外,因为我是已经搞完了这些,然后写的总结,所以可能会有遗漏的小问题没有写出来,比如爬取的这个题库好像有题目,我是直接打开文档手动删除了,不然之后的代码对行的处理就都要加1。 欢迎大家提出问题,互相讨论。
一、效果图
上面是爬取的txt文档
下面是转换后的
二、代码
import re
f=open(r'E:\格式转换\行政.txt',encoding='utf-8')#记得修改文档地址
fnew=open(r'E:\格式转换\xz.txt','a',encoding='utf-8')#记得修改文档地址
sum=0 #记录行数
str0='' #初始化字符串
f1=f.readlines() #读取文档
for f0 in f1: #遍历
sum=sum+1 #记录行数
str0='{' #键值对最开始的半个{
fnew.write(str0) #写入新文档
i=0 #计数用
while(i<sum): #循环 行数sum 次
if (i%6==0): #问题行
str0='"'+f1[i]+'":"' #"问题i":"
str0=str0.replace('\n','').replace('1、','').replace('2、','').replace('3、','').replace('4、','').replace('5、','')+'\n' #去除题号
i=i+5 #跳到答案行
if (i != 0 & i%5==0): #答案行
if f1[i].find('A')!=-1:
str0=str0+f1[i-4].replace('\n','')+'",' #"问题i":" + 答案i",
elif f1[i].find('B')!=-1:
str0=str0+f1[i-3].replace('\n','')+'",'
elif f1[i].find('C')!=-1:
str0=str0+f1[i-2].replace('\n','')+'",'
elif f1[i].find('D')!=-1:
str0=str0+f1[i-1].replace('\n','')+'",'
str0=str0.replace('A、','').replace('B、','').replace('C、','').replace('D、','').replace('\n','')+'\n' #去除选项号
i=i+1 #跳到下一问题行
if (i==sum): #遍历完所有
str0=str0.replace(',','}') #将最后一个逗号替换为}
fnew.write(str0) #写入文档
fnew.close() #关闭文档
f.close() #关闭文档
总结
对于这个文档处理,熟练运用replace()应该就可以了。
每一行都写了注释,希望能看懂。
下一篇是进行自动答题,感兴趣的可以继续关注。