专栏名称: Python学习交流
每天更新,更新python相关的知识。希望诸君有所收获!
目录
相关文章推荐
Python爱好者社区  ·  史上最强!PINN杀疯了 ·  昨天  
Python爱好者社区  ·  英伟达憾失DeepSeek关键人才?美国放走 ... ·  昨天  
Python爱好者社区  ·  离谱!下载DeepSeek最高判刑20年? ·  2 天前  
Python爱好者社区  ·  1885页的Python完全版电子书 ·  3 天前  
Python开发者  ·  o3-mini 碾压 DeepSeek ... ·  5 天前  
51好读  ›  专栏  ›  Python学习交流

英语四级很难考吗?我用Python半天记住了五千个单词!非常简单!

Python学习交流  · 公众号  · Python  · 2018-11-17 16:16

正文

程序介绍



私信小编007即可获取大量的PDF以及小编从其他地方爬取下来的视频教程!非常简单而且实用!

  1. settings.py配置查询文档;


  2. work.py自动分析数据保存至voca.db数据库文件;


  3. translate.py自动打开数据库调用API翻译单词并保存到数据库里;


  4. db2csv.py将数据库文件转换成csv表格文件;

  • python work.py;


  • python translate.py;


  • python db2csv.py。

具体实现


数据(Docx复杂的文档结构不好用,可以在Word里面以TXT方式保存)。




读入文件拿到所有单词:

def _open_file(self,filename):#打开文件,返回所有单词list
with open(filename,'r',encoding='utf-8')as f:
raw_words = f.read()
low_words = raw_words.lower()
words = re.findall('[a-z]+',low_words) #正则re找到所有单词
return words

剔除常用单词(is am are do……):

def _filter_words(self,raw_words,count=NUMBERS):#载入未处理的所有单词列表 和 默认count值
new_words = []
for word in raw_words:#找出非exclude 和 长度大于1 的单词 -> new_words
if word not in exclude_list and len(word) > 1:
new_words.append(word)
pass

计数:

from collections import Counter #计数器
pass
c = Counter(words) #list new_words
return c.most_common(5000) #拿到出现次数最多的5000单词,返回从大到小的排序list[(and,1),....]

数据库初始化Peewee模块:

from peewee import * 
db = SqliteDatabase('voca.db')
class NewWord(Model):
# 单词名
name = CharField()
# 解释
explanation = TextField(default='')
# 词频
frequency = IntegerField(default=0)
# 音标
phonogram = CharField(default='')
class Meta:
database = db

加入单词到数据库:

def insert_data(self,words_times):
# 向数据库内插入数据
for word,fre in words_times:
word_ins = NewWord.create(name = word , frequency = fre) #直接调用create
book.is_analyzed = True
book.save()

翻译:

#iciba翻译函数
def trans(self, word):
url = 'http://www.iciba.com/index.php?a=getWordMean&c=search&word=' + word
try:
req = requests.get(url)
req.raise_for_status()
info = req.json()
data = info['baesInfo']['symbols'][0]
assert info['baesInfo']['symbols'][0]
# 去除没有音标的单词
assert data['ph_am'] and data['ph_en']
# 去除没有词性的单词
assert data['parts'][0]['part']
except:
return ('none','none')
ph_en = '英 [' + data['ph_en'] + ']'
ph_am = '美 [' + data['ph_am'] + ']'
ex = ''
for part in data['parts']:
ex += part['part'] + ';'.join(part['means']) + ';'
return ph_en+ph_am, ex
#调用翻译函数,保存中文到数据库
for i in NewWord.select():
i.explanation = str(t.trans(i.name)[1])
i.save()

提取所有单词到CSV:

import csv
#提取所有数据库内容生成迭代对象 yield ~ 好好看看如何使用
def extract()
pass
for word in NewWord.select():
for i in [word.name, word.explanation, word.frequency]:






请到「今天看啥」查看全文