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 web程序
Sep 11 Python
简化Python的Django框架代码的一些示例
Apr 20 Python
浅析Python中的序列化存储的方法
Apr 28 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
Nov 07 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
Python Pywavelet 小波阈值实例
Jan 09 Python
python opencv判断图像是否为空的实例
Jan 26 Python
python实时检测键盘输入函数的示例
Jul 17 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 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
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
Python开发常用的一些开源Package分享
2015/02/14 Python
Python pymongo模块用法示例
2018/03/31 Python
Python的多维空数组赋值方法
2018/04/13 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
法律专业学生的自我评价
2014/02/07 职场文书
初二学习计划书范文
2014/04/27 职场文书
不错的求职信范文
2014/07/20 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
群众路线表态发言材料
2014/10/17 职场文书
员工年度工作总结2015
2015/05/18 职场文书
MySQL 数据表操作
2022/05/04 MySQL