會python這些技術,英語四級輕松過!!!
程序介紹
這是一個單詞頻率統計程序 ,基於python3 ,我將往年真題按照詞頻排序得到了四級詞庫 :總結出了 5000 個出現頻率極高的單詞 。
自動批量收集文件中的英語單詞 txt (utf-8)
統計排序保存到本地數據庫 voca.db
翻譯英文得到中文解釋
數據庫文件提取得到csv表格
在結合到大量的往年 cet-4 真題庫的情況下
本軟件成為了考試必備詞庫
希望大家都能輕松過四級
工作流程
settings.py 配置查詢文檔
work.py 自動分析數據保存至voca.db數據庫文件
translate.py 自動打開數據庫調用api翻譯單詞並保存到數據庫裏
db2csv.py 將數據庫文件轉換成csv表格文件
python work.py
python translate.py
python db2csv.py
具體實現
數據 (docx 復雜的文檔結構不好用,可以在word裏面以txt方式保存)
讀入文件拿到所有單詞
def_open_file(self,filename):#打開文件,返回所有單詞list
withopen(filename,‘r‘,encoding=‘utf-8‘)asf:
raw_words = f.read()
low_words = raw_words.lower()
words = re.findall(‘[a-z]+‘,low_words)#正則re找到所有單詞
returnwords
剔除 常用單詞(is am are do……)
def_filter_words(self,raw_words,count=NUMBERS):#載入未處理的所有單詞列表 和 默認count值
new_words = []
forwordinraw_words:#找出非exclude 和 長度大於1 的單詞 -> new_words
ifwordnotinexclude_listandlen(word) >1:
new_words.append(word)
pass
計數
fromcollectionsimportCounter#計數器
pass
c = Counter(words)#list new_words
returnc.most_common(5000)#拿到出現次數最多的5000單詞,返回從大到小的排序list[(and,1),....]
數據庫初始化 peewee模塊
frompeeweeimport*
db = SqliteDatabase(‘voca.db‘)
classNewWord(Model):
單詞名
name = CharField()
解釋
explanation = TextField(default=‘‘)
詞頻
frequency = IntegerField(default=0)
音標
phonogram = CharField(default=‘‘)
classMeta:
database = db
加入單詞到數據庫
definsert_data(self,words_times):
向數據庫內插入數據
forword,freinwords_times:
word_ins = NewWord.create(name = word , frequency = fre)#直接調用create
book.is_analyzed =True
book.save()
翻譯
#iciba翻譯函數
deftrans(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]
assertinfo[‘baesInfo‘][‘symbols‘][0]
去除沒有音標的單詞
assertdata[‘ph_am‘]anddata[‘ph_en‘]
去除沒有詞性的單詞
assertdata[‘parts‘][0][‘part‘]
except:
return(‘none‘,‘none‘)
ph_en =‘英 [‘+ data[‘ph_en‘] +‘]‘
ph_am =‘美 [‘+ data[‘ph_am‘] +‘]‘
ex =‘‘
forpartindata[‘parts‘]:
ex += part[‘part‘] +‘;‘.join(part[‘means‘]) +‘;‘
returnph_en+ph_am, ex
#調用翻譯函數,保存中文到數據庫
foriinNewWord.select():
i.explanation = str(t.trans(i.name)[1])
i.save()
提取所有單詞到csv
importcsv
#提取所有數據庫內容生成叠代對象 yield ~ 好好看看如何使用
defextract()
pass
forwordinNewWord.select():
foriin[word.name, word.explanation, word.frequency]:
datas.append(i)
yielddatas
#保存函數
defsave(data):
withopen(‘words.csv‘,‘a+‘, errors=‘ignore‘, newline=‘‘)asf:
csv_writer = csv.writer(f)
csv_writer.writerow(data)
#主程序
datas = extract()#yeild 叠代對象
whileTrue:
try:
data = next(datas)
except:
break
save(data)
收獲成果啦
翻譯過程
出現次數最多的簡單詞
出現次數較少,值得一背的詞
歡迎加入python學習交流q群250933691,分享我精心準備的Python學習資料,0基礎到進階!希望你們在學習Python道路上少走彎路!加油!
會python這些技術,英語四級輕松過!!!