Python实现单词翻译功能


Posted in Python onJune 06, 2017

      在进行英文文献阅读时,经常会出现一些不认识的单词,但对于一些pdf阅读器,比如Foxit阅读器使用翻译功能需要点击(Extra->Translate),并且启用了翻译功能将不能使用注释功能,这对于阅读者来说将是极不方便的。所以为了方便查询单词,自己开发了个Windows环境下的Python程序用于监控并查询单词,而只需的操作就是选中单词并按Ctrl+C即可。

该Python程序主要分为三部分:从另外一个应用程序中获取需要查询的单词,单词翻译和单词显示。

从另外一个应用程序中获取需要查询的单词涉及到进程间通信,在Windows上最简单的方法是使用Clipboard功能。Python中有多种方式可以使用剪切板,比如使用win32clipboard(Python使用剪切板的方法)。这里使用的是Qt实现的clipboard,Qt的剪切板实现支持当系统剪切板内容发生改变时回调。具体实现:

# 获取Qt的剪切板并绑定回调函数
self.clipboard = QApplication.clipboard()
self.clipboard.dataChanged.connect(self.on_clipboard_changed)
# 回调函数
 def on_clipboard_changed(self):
 data = self.clipboard.mimeData()
 if data.hasText():
  word = data.text().strip()
  m = re.match(r'[a-zA-Z]+', word)
  if m:
  self.setWord(word)
  #self.setWindowFlags(self.windowFlags() & QtCore.Qt.WindowStaysOnTopHint)
  #self.setWindowState(self.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive)
  trans = queryWords(word)
  self.setTrans(trans)
  
  ''' tip the window content has changed, but cannot move the window to the forground'''
  self.activateWindow()
  
  else:
  print(word)

单词翻译直接调用有道单词翻译,单词翻译的链接格式为http://dict.youdao.com/w/{}/,其中{}为需要查询的单词。获取的将是单个网页,使用BeautifulSoup提取最终的翻译结果。

def queryWords(word):
 ''' 利用有道翻译查询单词 '''
 url = 'http://dict.youdao.com/w/{}/'.format(word)
 html = getURL(url)
 soup = BeautifulSoup(html.text, 'html.parser')
 trans_container = soup.find(class_='trans-container')
 
 if not trans_container:
 ''' not found the translation '''
 return [word]
 
 trans_li = trans_container.find_all('li')
 trans_data = [li.text.strip() for li in trans_li]
 return trans_data

最后显示是通过Qt编写的界面,原本是想查询到单词后,界面窗口自动激活并移动到最前端,但Windows不允许未经用户操作而将窗口移动到最前端,所以最后只是通过激活窗口提示用户。

Python实现单词翻译功能

完整的代码位于https://github.com/llf2017/pyDict/blob/master/pyDict.py

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

Python 相关文章推荐
深入浅析python继承问题
May 29 Python
python3利用Dlib19.7实现人脸68个特征点标定
Feb 26 Python
Python比较2个时间大小的实现方法
Apr 10 Python
python os用法总结
Jun 08 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
Django rest framework jwt的使用方法详解
Aug 08 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
Python enumerate() 函数如何实现索引功能
Jun 29 Python
python操作链表的示例代码
Sep 27 Python
Python中Cookies导出某站用户数据的方法
May 17 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 #Python
python实现的正则表达式功能入门教程【经典】
Jun 05 #Python
Python中easy_install 和 pip 的安装及使用
Jun 05 #Python
详解Python pygame安装过程笔记
Jun 05 #Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 #Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
Jun 05 #Python
Python实现随机生成有效手机号码及身份证功能示例
Jun 05 #Python
You might like
PHP遍历数组的方法汇总
2015/04/30 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
python制作websocket服务器实例分享
2016/11/20 Python
python构建深度神经网络(DNN)
2018/03/10 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
中医专业应届生求职信
2013/11/17 职场文书
数控专业推荐信范文
2013/12/02 职场文书
食堂标语大全
2014/06/11 职场文书
单位实习鉴定评语
2015/01/04 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
教师工作表现自我评价
2015/03/05 职场文书
举起手来观后感
2015/06/09 职场文书
致运动员的广播稿
2015/08/19 职场文书
班主任培训研修日志
2015/11/13 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书