#小脚本#把海词dict.cn的生词变成vce格式的测试题目

本文介绍了一种将海词中的生词转化为VCEmanager可读格式的方法,以便于在移动设备上进行英语单词的学习。该方法通过编写Python脚本实现生词的批量转化,并利用Google字典API获取单词解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用海词了好久,也积累了400多个生词,一直都没找到一个好的方法来背下来这么多单词。

目前还来用单词测验是比较好的办法。

最近想到了一个办法,

1. 先把海词的生词导出

2. 然后用脚本把生词转化成VCE manager可以识别的格式,生成VCE格式的测试文件

3. 最后就可以在手机,平板上用VCE mobile背单词了


脚本如下


#-------------------------------------------------------------------------------
# Name:        module1
# Purpose:
#
# Author:      haow
#
# Created:     27/01/2014
# Copyright:   (c) haow 2014
# Licence:     <your licence>
#-------------------------------------------------------------------------------
import re
import sys
import urllib
import ast
from random import randint
from random import choice

def get_en_chr_list(content):
    en_list = []
    chr_list = []
    for line in content:
        chr_str = ""
        en_str = ""
        if len(line) > 2 and line[0] != "#":
            s = line.replace('\n','').replace('\r','')
            m = s.split("\t")
            s_new = []
            for i in m:
                if i != '':
                    s_new.append(i)

            en_str = s_new[0]
            if len(s_new) == 2:
                chr_str = s_new[1]
            else:
                for i in range (1,len(s_new)):
                    if keep_property(s_new[i]):
                        chr_str = chr_str + s_new[i] + "."
                    else:
                        trim_str = trim_en_char(s_new[i])
                        chr_str = chr_str + trim_str + "."

            chr_str=re.sub(r'(!n\.)\w+','',chr_str)
            chr_str=chr_str.replace('..','.').replace('..','.')
            en_list.append(en_str)
            chr_list.append(chr_str)

    return en_list,chr_list

def keep_property(str):
    if re.search(r'adj\.|v\.|vi\.|n\.|adv\.|vt\.', str):
        return True
    else:
        return False

def trim_en_char(str):
    str = re.sub(r'\w+','',str)
    return str

def print_en_chr_line(en_list,chr_list,line_num):
    print en_list[line_num],chr_list[line_num].decode("utf8")

def check(string):
    string = string.replace("'","'").replace(""","")
    return string

def get_seq(ans):
    if ans == 'A':
        seq = 0
    elif ans == 'B':
        seq = 1
    elif ans == 'C':
        seq = 2
    elif ans == 'D':
        seq = 3
    elif ans == 'E':
        seq = 4
    return seq

def search_en_google(word,filename):
    url="http://www.google.com/dictionary/json?callback=s&q="+word+"&sl=en&tl=zh&restrict=pr,de&client=te"
    try:
		obj=urllib.urlopen(url);
    except:
		pass
		return
    content=obj.read()
    obj.close()
    content=content[2:-10]
    dic=ast.literal_eval(content)
    if dic.has_key("webDefinitions"):
		webdef=dic["webDefinitions"]
		webdef=webdef[0]
		webdef=webdef["entries"]
		index=1
		index_list=["01","02"]
		for i in webdef:
			if index==3:
				break
			filename.write('\tExplanation'+str(index)+':\n')
			index+=1

			if i["type"]=="meaning":
				ans=i["terms"]
				op=ans[0]['text']
				split=op.split(';')
				filename.write('\t'+check(split[0].strip())+'\n')
				count=0
				for i in split:
					if count!=0:
						filename.write('\t\t'+check(i)+'\n')
					count+=1
    else:
		pass
    filename.write('\n')


def main():
    answer = ['A','B','C','D','E']
    question = """%s. What is the meaning of %s.

A. %s
B. %s
C. %s
D. %s
E. %s

Answer: %s

Correct answer explanation and reference.

"""
    file = open("C:\\Users\\haow\\Downloads\\wordbook.txt","r")
    content = file.readlines()
    enl,chrl = get_en_chr_list(content)
    file.close()
    file = open("C:\\Users\\haow\\Downloads\\wordquiz.txt","w+")
    #print_en_chr_line(enl,chrl,0)

    for i in range (0,len(enl)):
        quiz_list = []
        quiz_num = i + 1
        quiz_list.append(quiz_num)
        quiz_list.append(chrl[i]) #Answer from chrl
        ans = choice(answer)
        seq = get_seq(ans)
        temp_list = [None]*5
        for j in range (0,5):
            if j == seq:
                temp_list[j] = enl[i] #Correct Choice
            else:
                wrong_choice = choice(enl)
                while wrong_choice == enl[i] or wrong_choice in temp_list:
                    wrong_choice = choice(enl)
                temp_list[j] = wrong_choice
            quiz_list.append(temp_list[j])
        quiz_list.append(ans)
        quiz_body = question % (quiz_list[0],quiz_list[1],quiz_list[2],quiz_list[3],quiz_list[4],quiz_list[5],quiz_list[6],quiz_list[7])
        file.write(quiz_body)
        search_en_google(enl[i],file)

    for i in range (0,len(enl)):
        quiz_list = []
        quiz_num = i + len(enl) + 1
        quiz_list.append(quiz_num)
        quiz_list.append(enl[i]) #Answer from chrl
        ans = choice(answer)
        seq = get_seq(ans)
        temp_list = [None]*5
        for j in range (0,5):
            if j == seq:
                temp_list[j] = chrl[i] #Correct Choice
            else:
                wrong_choice = choice(chrl)
                while wrong_choice == chrl[i] or wrong_choice in temp_list:
                    wrong_choice = choice(chrl)
                temp_list[j] = wrong_choice
            quiz_list.append(temp_list[j])
        quiz_list.append(ans)
        quiz_body = question % (quiz_list[0],quiz_list[1],quiz_list[2],quiz_list[3],quiz_list[4],quiz_list[5],quiz_list[6],quiz_list[7])
        file.write(quiz_body)
        search_en_google(enl[i],file)

    file.close



if __name__ == '__main__':
    main()

其中的细节都不多说了,利用了Google的字典引擎来做注释,程序还有待进一步的优化





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值