想起高中的时候英语一直很差,后来发现背英语中出现频率最高的单词是一种很高效的学习方法,于是现在写出来一个小程序
更新 最近数据结构课程设计,老师给的题目里面有个就是分析文本,统计单词频率,用c++来写,所以就增加c++版本的,源码在github里已更新,因为是课程设计,就没用c++的map库来写,用自己定义的红黑树来实现的
github项目地址 (如果觉得这个程序好,求个star) 这个小程序可以统计文件input.txt文本中所有英文单词的词频(由高到低排序),并给出每个单词的翻译 这个程序有两种方法,第一种用goole-cloud库,收费的,不过运行时间快一些,第二种模拟网页请求,时间略长,不能大量翻译. 本程序用的两种方法都可以运行,第一种在本机运行后,超出了免费翻译次数,于是就用的第二种,要用第一种的话,把源代码中注释的代码取消注释即可,再把第二种的注释就可以了
一.运行前需要安装google-cloud库,并安装Google Cloud SDK 1.安装相关模块 1 pip install --upgrade google-cloud-translate
2.调用api进行翻译之前,需要安装相关证书 安装 Google Cloud SDK 因为在本地上运行,使用的第一种方式,安装之后会有自动弹出验证邮箱的界面,如果没有在Google cloud sdk shell 运行1 gcloud auth application-default login
二.使用urllib取googletranslate 模拟一个头部,请求到translate.google.com去,然后解析出翻译文本
运行方式 把将要统计的文本放入Input.txt文件中,直接运行即可
源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 import reimport urllib.requestimport syslength = 4 input = open("words.txt" ,'r' ,encoding='utf-8' ) output = open('ouput.txt' ,'w+' ,encoding='utf-8' ) typ = sys.getfilesystemencoding() def translate (querystr, to_l="zh" , from_l="en" ) : C_agent = {'User-Agent' : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" } flag = 'class="t0">' tarurl = "http://translate.google.com/m?hl=%s&sl=%s&q=%s \ " % (to_l, from_l, querystr.replace(" " , "+" )) request = urllib.request.Request(tarurl, headers=C_agent) page = str(urllib.request.urlopen(request).read().decode(typ)) target = page[page.find(flag) + len(flag):] target = target.split("<" )[0 ] return target try : all_word = input.read() l = re.split(r'[^A-Za-z]+' ,all_word) d = {} for i in l: i = i.lower() if d.get(i)==None : d[i] = 1 else : d[i] = d[i] +1 ju = 0 for word in sorted(d,key=d.get,reverse=True ): if len(word)<length: continue tran = translate(word) string = "%-18s%-10s%-7d\t" %(word,tran,d[word]) ju += 1 if ju%8 ==0 : string += '\n' output.write(string) finally : input.close() output.close()