利用Python将选择题、多选题导入Anki
本文仅针对于ios与Win下,安卓下无法正常使用。
效果展示
有计分与答题功能,模板来自anki选择题模板—自动匹配单选多选—Monokai风格—带计分板 - 知乎 (zhihu.com)
利用Python对原题(.doc .txt)进行处理
需要一定Python与Pandas库基础,某些用Word直接导入Excel也可以解决
我的题库格式为
1、商品是( )
A.用于满足人们需要的劳动产品 B.为市场交换而生产的有用的劳动产品
C.一切物品 D.一切有用的物品
【正确答案是】:B
2、价值的本质是( )
A.一般人类劳动 B.抽象劳动 C.具体劳动 D.社会生产关系
【正确答案是】:D
3、一定社会财富的物质内容由( )
A.使用价值构成 B.交换价值构成
C.价值构成 D.货币构成
【正确答案是】:A
4、价值或交换价值的物质承担者是( )
A.商品 B.货币 C.价格 D.使用价值
【正确答案是】:D
5、具体劳动和抽象劳动是( )
A.两种劳动 B.两次劳动
C.两个过程的劳动 D.同一劳动过程的两个方面
Python代码及思路
import re
import pandas as pd
from io import StringIO
f = open('test.txt','r',encoding='utf-8')
lm=f.read()
#把中文字符括号替换为英文字符括号,2去掉换行符,3去掉空格,4去掉制表符
lm=lm.replace('(', '(').replace(')', ')').replace('\n', '').replace(" ", "").replace("\t","").strip()
#在选项A前加逗号
lm1=re.sub('A\.',',A.',lm)
#将”【正确答案是】:“替换为,
lm1=re.sub('【正确答案是】:',',',lm1)
#在题目号码前加入换行符,题号上限999,若题目超过1000则将'[1-9]?[0-9]?[0-9]、'改为'[1-9]?[0-9]?[0-9]、'
new_string=re.sub('[1-9]?[0-9]?[0-9]、',lambda x:"\r\n"+x.group(0),lm1)
#去掉空行
lm2=re.sub('^\r\n','',new_string)
df=pd.read_csv(StringIO(lm2),error_bad_lines=False,header=None)
#在选项中添加换行符
for i in range(0,len(df)):
df[1][i]=df[1][i].replace("B.","\r\nB.")
df[1][i]=df[1][i].replace("C.","\r\nC.")
df[1][i]=df[1][i].replace("D.","\r\nD.")
#保存文件
df.to_csv('result.csv',encoding='utf-8-sig',index=False,header=None)
利用了部分正则表达式,不熟悉也没关系可以,可以在Jupyter中尝试逐步输出修改。
导出的csv文件应该是下面这样的
**需要注意的是,由于我用的模板的原因必须在答案右列加一列任意的字符当作模板中“remark”列。**当然remark列也可以自己输入题目的提示的。
我是直接用Excel插入了一列1。
也就是下图这样
下载并导入模板
下载网址:选择题-自动匹配单选多选模板.zip - 蓝奏云 (lanzouv.com)
如果已安装电脑版Anki,解压后双击即可导入模板,导入后牌组可以删除,模板已自动保存。
将得到的csv导入Anki
新建牌组导入即可
模板选下图所示的模板