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检测是文件还是目录的方法
Jul 03 Python
Python中判断输入是否为数字的实现代码
May 26 Python
python selenium 弹出框处理的实现
Feb 26 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
Django logging配置及使用详解
Jul 23 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
python 插入日期数据到Oracle实例
Mar 02 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
Python 随机按键模拟2小时
Dec 30 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 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执行批量mysql语句的解决方法
2013/05/02 PHP
php的hash算法介绍
2014/02/13 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
jQuery DOM操作小结与实例
2010/01/07 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
Python做文本按行去重的实现方法
2016/10/19 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
用Python解数独的方法示例
2019/10/24 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
施工安全生产承诺书
2014/05/23 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
初中同学会活动方案
2014/08/22 职场文书
教学质量月活动总结
2015/05/11 职场文书
音乐研修感悟
2015/11/18 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL