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数组条件过滤filter函数使用示例
Jul 22 Python
Python模拟登录验证码(代码简单)
Feb 06 Python
Python中的字符串操作和编码Unicode详解
Jan 18 Python
python 换位密码算法的实例详解
Jul 19 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
Python3.x爬虫下载网页图片的实例讲解
May 22 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
解决python3运行selenium下HTMLTestRunner报错的问题
Dec 27 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
浅谈Python3中print函数的换行
Aug 05 Python
python装饰器代码深入讲解
Mar 01 Python
Python字符串格式化方式
Apr 07 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 缓冲的免费实现方法
2006/10/09 PHP
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
phpmail类发送邮件函数代码
2012/02/20 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
在pytorch中查看可训练参数的例子
2019/08/18 Python
python字符串的拼接方法总结
2019/11/18 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
工程安全员岗位职责
2014/03/09 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
自荐信模板大全
2015/03/27 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
PHP命令行与定时任务
2021/04/01 PHP
浅谈Python项目的服务器部署
2021/04/25 Python
canvas 中如何实现物体的框选
2022/08/05 Javascript