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

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

程序介绍

a1fd8c307af242ec9ef08ed6d313b2aa.jpeg

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

settings.py配置查询文档;

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

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

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

python work.py;

python translate.py;

python db2csv.py。

具体实现

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

e69ecbec23bb435e8f71f8a761176fd1.jpeg

读入文件拿到所有单词:

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]:

datas.append(i)

yield datas

#保存函数

def save(data):

with open('words.csv', 'a+', errors='ignore', newline='')as f:

csv_writer = csv.writer(f)

csv_writer.writerow(data)

#主程序

datas = extract() #yeild 迭代对象

while True:

try:

data = next(datas)

except:

break

save(data)

收获成果啦

翻译过程:

a665fe2a52c44bf7b4d42627278e35bb.jpeg

出现次数最多的简单词:

4cb957eacede4aa98abfb9db2eb2f3fd.jpeg

出现次数较少,值得一背的词:

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值