答题微信小程序实现(7):python3将题库处理成json格式的。

通常来说,我们写答题程序的时候,拿到手的题库不会是json格式的,而是word或txt、pdf就像考试卷子那样的。
这里写一下用python3将普通题库处理成json格式,选择python3的原因是,相对于2.7版本,它对中文更友好。
原始题库如下:

1、先秦时代,教育内容以“六艺”为主,下列不属于“六艺”的是(D)。
A、射B、御C、礼D、武
2、经魏晋多名士,有著名的竹林七贤,《与山巨源绝交书》是竹林七贤中的谁写给山涛的(B)。
A、阮籍B、嵇康C、刘伶D、向秀
3、科举制在中国影响深远,乡试录取者称为“举人”,会试录取者称为“贡生”,那么殿试录取者称为(C)。
A、“大元”B、“解元”C、“进士”D、“榜眼”
4、“生当做人杰,死亦为鬼雄,至今思项羽,不肯过江东。”为哪位诗人的作品?(D)
A、李白B、杜甫C、李商隐D、李清照
5、“豆蔻”是指(A)岁。
A、十三B、十五C、十八D、二十
6、中国的书院制度自唐代始,有官方和私人设置的两类,下列各书院属于官方创办的是(C)
A、岳麓书院B、嵩阳书院C、集贤书院D、白鹿洞书院
7、友谊的深浅,由下列那一个成语可以看出情义最为深重?(C)
A、莫逆之交B、金兰之交C、刎颈之交D、点头之交
8、一提到书法中的草书,人们便会想到“颠张醉素”,请问下列属于颠张的作品的是(B)
A、自叙帖B、自言帖C、中秋帖D、黄州寒食帖
9、鲁迅先生称(A)为“史家之绝唱,无韵之离骚”。
A、史记B、汉书C、三国志D、资治通鉴
10、郑谷有诗曰:“何事文星与酒星,一时钟在李先生。高吟大醉三千百,留着人间伴月明。”诗中的李先生指的是(C)
A、李商隐B、李贺C、李白D、李煜
11、“四羊方尊”是哪个朝代的文物:(C)
A、周B、元C、商D、夏
12、张渭《别韦郎中》一诗中有“不知郎中桑落酒,教人无奈别离何”一句,句中所提到的“桑落酒”原产地在(A)
A、永济B、桑落C、汾阳D、绵竹
13、“天道有常,不为尧存,不为桀亡。”是百家中那位思想家的观点(C)
A、孟子B、韩非子C、荀子D、老子
14、爵是一种典礼时用的酒器,那么爵有几只脚?(A)
A、三只脚B、两只脚C、四只脚D、五只脚
15、魏晋时期,建安七子是当时文学的代表人物,下列属于建安七子的是(D)。
A、嵇康B、曹植C、山涛D、阮瑀
16、南宋时期出现了中兴四大诗人,其中陆游声名最著,下列各诗句不是陆游所作的是(C)。
A、塞上长城空自许,镜中衰鬓已先斑。B、山重水复疑无路,柳暗花明又一村。C、折腰曾愧五斗米,负郭元无三顷田。D、京华结交尽奇士,意气相期共生死。
17、下列哪一个名称的由来与伍子胥有关?(B)
A、月老B、千金小姐C、新郎D、岳父
18、下列不属于中医别称的的是(C)
A、杏林B、悬壶C、黄芪D、歧黄
19、“茕茕子立,形影相吊”出自(C)
A、《出师表》B、《答司马谏议书》C、《陈情表》D、《报刘一丈书》
20、下列不属于“十三经”的是(C)
A、周易B、尚书C、史记D、尔雅
21、“形存则神存,形谢则神灭”是由谁提出的(A)
A、范缜B、柳宗元C、周敦颐D、刘禹锡
22、(B)时期,国家设立五经博士。
A、秦始皇B、汉武帝C、汉高祖D、光武帝
23、菩提本无树,明镜亦非台,本来无一物,何处惹尘埃,出自(B)
A、慧思B、慧能C、神秀D、玄奘
24、宋朝著名的女词人除了大家所熟悉的李清照外,还有一位朱淑真。前者的词集叫做《漱玉词》,请问后者词集是(D)
A、《饮水词》B、《花外集》C、《梦窗词》D、《断肠词》
25、韩非子的法治思想主要强调什么相结合(B)
A、道、术、势B、法、术、势C、道、法、势D、道、法、师

处理后的题库如下:

{"name":"先秦时代,教育内容以“六艺”为主,下列不属于“六艺”的是    。","daan": "D",
"content":["射","御","礼","武"]},
{"name":"经魏晋多名士,有著名的竹林七贤,《与山巨源绝交书》是竹林七贤中的谁写给山涛的    。","daan": "B",
"content":["阮籍","嵇康","刘伶","向秀"]},
{"name":"科举制在中国影响深远,乡试录取者称为“举人”,会试录取者称为“贡生”,那么殿试录取者称为    。","daan": "C",
"content":["“大元”","“解元”","“进士”","“榜眼”"]},
{"name":"“生当做人杰,死亦为鬼雄,至今思项羽,不肯过江东。”为哪位诗人的作品?    ","daan": "D",
"content":["李白","杜甫","李商隐","李清照"]},
{"name":"“豆蔻”是指    岁。","daan": "A",
"content":["十三","十五","十八","二十"]},
{"name":"中国的书院制度自唐代始,有官方和私人设置的两类,下列各书院属于官方创办的是    ","daan": "C",
"content":["岳麓书院","嵩阳书院","集贤书院","白鹿洞书院"]},
{"name":"友谊的深浅,由下列那一个成语可以看出情义最为深重?    ","daan": "C",
"content":["莫逆之交","金兰之交","刎颈之交","点头之交"]},
{"name":"一提到书法中的草书,人们便会想到“颠张醉素”,请问下列属于颠张的作品的是    ","daan": "B",
"content":["自叙帖","自言帖","中秋帖","黄州寒食帖"]},
{"name":"鲁迅先生称    为“史家之绝唱,无韵之离骚”。","daan": "A",
"content":["史记","汉书","三国志","资治通鉴"]},
{"name":"郑谷有诗曰:“何事文星与酒星,一时钟在李先生。高吟大醉三千百,留着人间伴月明。”诗中的李先生指的是    ","daan": "C",
"content":["李商隐","李贺","李白","李煜"]},
{"name":"“四羊方尊”是哪个朝代的文物:    ","daan": "C",
"content":["周","元","商","夏"]},
{"name":"张渭《别韦郎中》一诗中有“不知郎中桑落酒,教人无奈别离何”一句,句中所提到的“桑落酒”原产地在    ","daan": "A",
"content":["永济","桑落","汾阳","绵竹"]},
{"name":"“天道有常,不为尧存,不为桀亡。”是百家中那位思想家的观点    ","daan": "C",
"content":["孟子","韩非子","荀子","老子"]},
{"name":"爵是一种典礼时用的酒器,那么爵有几只脚?    ","daan": "A",
"content":["三只脚","两只脚","四只脚","五只脚"]},
{"name":"魏晋时期,建安七子是当时文学的代表人物,下列属于建安七子的是    。","daan": "D",
"content":["嵇康","曹植","山涛","阮瑀"]},
{"name":"南宋时期出现了中兴四大诗人,其中陆游声名最著,下列各诗句不是陆游所作的是    。","daan": "C",
"content":["塞上长城空自许,镜中衰鬓已先斑。","山重水复疑无路,柳暗花明又一村。","折腰曾愧五斗米,负郭元无三顷田。","京华结交尽奇士,意气相期共生死。"]},
{"name":"下列哪一个名称的由来与伍子胥有关?    ","daan": "B",
"content":["月老","千金小姐","新郎","岳父"]},
{"name":"下列不属于中医别称的的是    ","daan": "C",
"content":["杏林","悬壶","黄芪","歧黄"]},
{"name":"“茕茕子立,形影相吊”出自    ","daan": "C",
"content":["《出师表》","《答司马谏议书》","《陈情表》","《报刘一丈书》"]},
{"name":"下列不属于“十三经”的是    ","daan": "C",
"content":["周易","尚书","史记","尔雅"]},
{"name":"“形存则神存,形谢则神灭”是由谁提出的    ","daan": "A",
"content":["范缜","柳宗元","周敦颐","刘禹锡"]},
{"name":"    时期,国家设立五经博士。","daan": "B",
"content":["秦始皇","汉武帝","汉高祖","光武帝"]},
{"name":"菩提本无树,明镜亦非台,本来无一物,何处惹尘埃,出自    ","daan": "B",
"content":["慧思","慧能","神秀","玄奘"]},
{"name":"宋朝著名的女词人除了大家所熟悉的李清照外,还有一位朱淑真。前者的词集叫做《漱玉词》,请问后者词集是    ","daan": "D",
"content":["《饮水词》","《花外集》","《梦窗词》","《断肠词》"]},
{"name":"韩非子的法治思想主要强调什么相结合    ","daan": "B",
"content":["道、术、势","法、术、势","道、法、势","道、法、师"]},

python代码如下:


f=open(r'D:\微信小程序\答题小程序说明\题库.txt')
fnew=open(r'D:\微信小程序\答题小程序说明\题库新.txt','a')
sum=0
str0=''
f1=f.readlines()
for f0 in f1:
    sum=sum+1
print(sum)
for i in range(0,sum):
    if i%2==0:
        th=str(int(i*0.5+1))+'、'
        print(th)
        if f1[i].find('(A)')!=-1:
            str0='{"name":"'+f1[i].replace('(A)','    ')+'","daan": "A",'
        elif f1[i].find('(B)')!=-1:
            str0='{"name":"'+f1[i].replace('(B)','    ')+'","daan": "B",'
        elif f1[i].find('(C)')!=-1:
            str0='{"name":"'+f1[i].replace('(C)','    ')+'","daan": "C",'
        elif f1[i].find('(D)')!=-1:
            str0='{"name":"'+f1[i].replace('(D)','    ')+'","daan": "D",'
        str0=str0.replace('\n','').replace(th,'')+'\n'
    else:
        str0='"content":'+f1[i]+'"]},'
        str0=str0.replace('A、','["').replace('B、','","').replace('C、','","').replace('D、','","').replace('\n','')+'\n'
    print(str0)
    fnew.write(str0)


fnew.close()

f.close()



挺简单的,没用啥第三方库,就是一个文本处理,路径上加了r,是为了防止转译。open里那个’a’是补充的意思,’w’的话就是覆盖,一行一行写入,肯定不能用覆盖。
有两个循环,第一个循环算出sum的值,就是一共有几行。
第二个循环,就是处理每行,range(0,sum)在这个区间循环,包括0,不包括sum,其实就是[0,sum)集合。
有几个if语句,find是在字符串中找给定的字,找不到值返回-1。python里面不用else if,而是elif。
print是打印到编译器界面上,python3的版本是print(str),2.7是python str,有些不一样,write就是写入。
应当注意,程序完事之后一定要写上close(),写完东西,文件不关,可不是好习惯。
over。
另:
如果代码运行结束后,题库格式有出入,请核查原文件,例如A、不是A,(A)而不是(A)等等,代码都按全角算的,毕竟,没有做模糊匹配。
代码本身没有问题。

阅读更多
文章标签: python 微信 小程序
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

答题微信小程序实现(7):python3将题库处理成json格式的。

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭