python创建属于自己的单词词库 便于背单词


Posted in Python onJuly 30, 2019

本文实例为大家分享了python创建单词词库的具体代码,供大家参考,具体内容如下

基本思路:以COCA两万单词表为基础,用python爬取金山词霸的单词词性,词义,音频分别存入sqllite。背单词的时候根据需要自定义数据的选择方式。

效果如下:

python创建属于自己的单词词库 便于背单词

代码写的比较随意,还请见谅。

创建数据库

cu.execute('create table test (id INTEGER PRIMARY KEY AUTOINCREMENT,dc varchar(20),cx varchar(20),cy varchar(50),mp3 varchar(50));')

完整代码,效率不高,不过够用了

import requests
from bs4 import BeautifulSoup
import re
import traceback
import sqlite3
import time
import sys

def ycl(word):
 try:
 url = "http://www.iciba.com/{}".format(word)
 headers = { 'Host': 'www.iciba.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding': 'gzip, deflate', 'Referer': 'http://www.baidu.com', 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', }
 response = requests.get(url = url,headers = headers)
 soup = BeautifulSoup(response.text,"lxml")
 #输出单词词性
 cx = soup.find(class_='base-list switch_part')(class_='prop')
 #输出词性词义
 mp3 = soup.find_all(class_='new-speak-step')[1]
 pattern = re.compile(r'http://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+.mp3')
 mp3url = re.findall(pattern,mp3['ms-on-mouseover'])
 mp3url = '.'.join(mp3url)
 r = requests.get(mp3url)
 #单词音频输出路径
 dress = "E:\\sound\\"
 mp3path = dress +word+".mp3"
 with open(mp3path, 'wb') as f:
  f.write(r.content)
 #获取词性个数
 meanings =soup.find_all(class_='prop')
 #实行每个词性的词义同行输出
 for i in range(len(meanings)):
  s = soup.find(class_='base-list switch_part')('li')[i]('span')
  c = cx[i].text
  a = ''
  for x in range(len(s)):
  b = s[x].text
  a = a + b
  print(word)
  print(c)
  print(a)
  # 存入数据库的方法
  conn = sqlite3.connect("word.db")
  cu = conn.cursor() 
  sql =cu.execute("INSERT INTO test (id,dc,cx,cy,mp3)VALUES(NULL,'%s','%s','%s','%s');"%(word,c,a,mp3path))
  print(sql)
  conn.commit()
  print('\n')
 except Exception as e:
 print(e)
 print("error")
 with open("log.txt",'a') as f:
  f.write(word+'\n')
def duqudanci(file):
 wordcount = 0
 for line in open(file):
 word = line.strip('\n')
 wordcount += 1
 print(wordcount)
 ycl(word)
 
if __name__ == '__main__':
 conn = sqlite3.connect("word.db")
 cu = conn.cursor()
 word = ""
 #需要爬取的单词
 duqudanci(sys.argv[1])
 print('下载完成')
 conn.commit()
 conn.close()

自定义背单词: 根据需要可以将单词放入txt文件中进行测试,可以输出词义拼写单词,也可以输出单词,选择对应释义。 当然还可以给每个单词词义加两个属性值,分别表示学习次数和答错次数,然后可以根据这两个值来选择单词,如果有兴趣的话,可以尝试一下。

import sqlite3
import random
import sys
from playsound import playsound 
# 中译英
def CtoE():
 for j in list1:

 sql =cu.execute('select id,dc,cx,cy,mp3 from wordinfo where id = ?',(j,))
 for it in sql:
 # 返回的是元组,直接对元组查询
 c=0
 while c<3:
 print("当前单词ID = "+str(it[0]))
 print("释义:"+it[3])
 # 播放音频
 playsound(it[4])
 a = input("请拼写单词,共有三次机会:")
 if a == it[1]:
 print("拼写正确")
 break;
 c += 1
 print('第%d次拼写错误'%c)
 print('\n')
 print("下一个")
 print('\n')
# 英译中
def EtoC():
 for j in list1:
 sql =cu.execute('select id,dc,cx,cy,mp3 from wordinfo where id = ?',(j,))
 d =0
 for it in sql:
 # 返回的是元组,直接对元组查询
 c=0
 while c<3:
 # 释放list2
 list2 = []
 sql =cu.execute('select cy from wordinfo where id !=? order by random() limit 3',(j,)) 
 for t in sql:
 for o in range(len(t)):
 #将随机取出的数据放入列表
 list2.append(t[o]) 
 # 加入正确答案
 p = random.randint(0,3)
 list2.insert(p,it[3])
 print("当前单词ID = "+str(it[0]))
 print("选择单词的对应释义:----"+it[1])
 playsound(it[4])
 dict1 = {'A':list2[0],'B':list2[1],'C':list2[2],'D':list2[3]}
 print("A:"+dict1.get('A')+'\n')
 print("B:"+dict1.get('B')+'\n')
 print("C:"+dict1.get('C')+'\n')
 print("D:"+dict1.get('D')+'\n')
 answer1 = input("请选择,共有三次机会(大写):")
 if dict1.get(answer1)== it[3]:
 print("正确")
 break;
 c += 1
 print('第%d次拼写错误'%c)
 d += 1
 print('\n')
 print("下一个")
 print('\n')
def main(file):
 for line in open(file):
 word = line.strip('\n')
 sql =cu.execute('select id from wordinfo where dc = ?',(word,))
 for x in sql:
 list1.append(x[0])
 cho = input("英译中请选1,中译英请选2:")
 if cho =="1":
 EtoC() 
 elif cho =="2":
 CtoE()
 else:
 print("错误,请重试")

if __name__ == '__main__':
 conn = sqlite3.connect("word.db")
 cu = conn.cursor() 
 list1 = []
 word = ""
 main(sys.argv[1])
 conn.commit()
 conn.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中二维阵列的变换实例
Oct 09 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
Feb 03 Python
pandas多级分组实现排序的方法
Apr 20 Python
可能是最全面的 Python 字符串拼接总结【收藏】
Jul 09 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
Python3搭建http服务器的实现代码
Feb 11 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
Python decimal模块使用方法详解
Jun 08 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 Python
Python中npy和mat文件的保存与读取
Apr 24 Python
python中append实例用法总结
Jul 30 #Python
简单了解django orm中介模型
Jul 30 #Python
Python爬虫学习之翻译小程序
Jul 30 #Python
安装docker-compose的两种最简方法
Jul 30 #Python
Django的性能优化实现解析
Jul 30 #Python
Python爬虫学习之获取指定网页源码
Jul 30 #Python
django-初始配置(纯手写)详解
Jul 30 #Python
You might like
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
使用PHP求两个文件的相对路径
2013/06/20 PHP
yii上传文件或图片实例
2014/04/01 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
清空上传控件input file的值
2010/07/03 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
Python数据类型详解(一)字符串
2016/05/08 Python
Python使用剪切板的方法
2017/06/06 Python
遗传算法之Python实现代码
2017/10/10 Python
python requests post多层字典的方法
2018/12/27 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
涂鸦板简单实现 Html5编写属于自己的画画板
2016/07/05 HTML / CSS
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
2013年入党人员的自我鉴定
2013/10/25 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
社会实践活动总结报告
2014/04/29 职场文书
无房证明范本
2014/09/17 职场文书
实习介绍信范文
2015/05/05 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript
Python实现抖音热搜定时爬取功能
2022/03/16 Python