利用Python将选择题、多选题导入Anki

利用Python将选择题、多选题导入Anki

本文仅针对于ios与Win下,安卓下无法正常使用。

效果展示

有计分与答题功能,模板来自anki选择题模板—自动匹配单选多选—Monokai风格—带计分板 - 知乎 (zhihu.com)

image-20211214145423452image-20211214145451928

利用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文件应该是下面这样的

image-20211214144254740

**需要注意的是,由于我用的模板的原因必须在答案右列加一列任意的字符当作模板中“remark”列。**当然remark列也可以自己输入题目的提示的。

我是直接用Excel插入了一列1。

也就是下图这样

image-20211214144532009

下载并导入模板

下载网址:选择题-自动匹配单选多选模板.zip - 蓝奏云 (lanzouv.com)

如果已安装电脑版Anki,解压后双击即可导入模板,导入后牌组可以删除,模板已自动保存。

将得到的csv导入Anki

新建牌组导入即可

image-20211214144924489

模板选下图所示的模板

image-20211214145018476

引用

anki使用之选择题批量导入-用python处理 - 简书 (jianshu.com)

anki选择题模板—自动匹配单选多选—Monokai风格—带计分板 - 知乎 (zhihu.com)

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值