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 相关文章推荐
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
跟老齐学Python之Python安装
Sep 12 Python
在Python中处理时间之clock()方法的使用
May 22 Python
python连接字符串的方法小结
Jul 13 Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 Python
Python探索之创建二叉树
Oct 25 Python
简单了解python反射机制的一些知识
Jul 13 Python
django 单表操作实例详解
Jul 30 Python
如何写python的配置文件
Jun 07 Python
OpenCV 之按位运算举例解析
Jun 19 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
Python采集壁纸并实现炫轮播
Apr 30 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
python Kmeans算法原理深入解析
2019/08/23 Python
如何使用python进行pdf文件分割
2019/11/11 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
给领导的致歉信范文
2014/01/13 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
组织委员竞选稿
2015/11/21 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
MySQL三种方式实现递归查询
2022/04/18 MySQL