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实现二分法算法实例
Feb 02 Python
Python可跨平台实现获取按键的方法
Mar 05 Python
python常规方法实现数组的全排列
Mar 17 Python
Python中每次处理一个字符的5种方法
May 21 Python
Python通过DOM和SAX方式解析XML的应用实例分享
Nov 16 Python
Python 中 Meta Classes详解
Feb 13 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
Jan 14 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
django 实现简单的插入视频
Apr 07 Python
Python使用configparser读取ini配置文件
May 25 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 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
用Flash图形化数据(一)
2006/10/09 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
详解Python 函数如何重载?
2019/04/23 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
物业客服专员岗位职责
2013/11/30 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
关爱老人标语
2014/06/21 职场文书
创新社会管理心得体会
2014/09/12 职场文书
公民授权委托书范本
2014/09/17 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
单位工作证明
2014/10/07 职场文书
Java 多线程并发FutureTask
2022/06/28 Java/Android