使用Python进行单词翻译

  在进行英文文献阅读时,经常会出现一些不认识的单词,但对于一些pdf阅读器,比如Foxit阅读器使用翻译功能需要点击(Extra->Translate),并且启用了翻译功能将不能使用注释功能,这对于阅读者来说将是极不方便的。所以为了方便查询单词,自己开发了个Windows环境下的Python程序用于监控并查询单词,而只需的操作就是选中单词并按Ctrl+C即可。

  该Python程序主要分为三部分:从另外一个应用程序中获取需要查询的单词,单词翻译和单词显示。

  从另外一个应用程序中获取需要查询的单词涉及到进程间通信,在Windows上最简单的方法是使用Clipboard功能。Python中有多种方式可以使用剪切板,比如使用win32clipboard(http://blog.csdn.net/jackeriss/article/details/40722833)。这里使用的是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不允许未经用户操作而将窗口移动到最前端,所以最后只是通过激活窗口提示用户。

  完整的代码位于https://github.com/llf2017/pyDict/blob/master/pyDict.py

时间: 2024-11-29 07:08:21

使用Python进行单词翻译的相关文章

python制作查找单词翻译的脚本

本人由于英语渣,在linux底下经常看文档,但是有没有想有道词典这种软件,所以遇到不懂的单词只能手动复制粘贴在网上查找,这样就很不方便,学了python之后,就试着自己尝试下个在命令行下查找单词翻译的脚本. 在我眼里,实现上面这个要求的脚本语言分几块完成: 一是选好一个单词翻译的网站,优先选择GET方法的(代码写起来比较方便),如果是POST方法也不是没有办法,只是要自己新建一个POST请求,为此我就找到了一个用GET方法查找单词的神器网站——在线翻译_在线词典_金山词霸_爱词霸英语,用起来就很

python 统计单词个数---不去重

需求: 统计一篇完全由英文构成的文章中的单词的个数 分析:需要判断什么是单词,并统计判断为单词的元素的个数 需要: Python 正则表达式 简单例子: import re pattern  = re.compile(r'\w+') pattern.match('hello ,world') words = pattern.findall('hello hello  world') len(words)

Python 调用百度翻译API

由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu api 整了一下,和大家分享. 1.百度翻译api 由于百度翻译api需要用到API key,所以,得注册百度开发者账号,然后创建开发者服务工程,得到的授权API key,具体操作可查看官方文档,请点 百度翻译api 2.代码实现  基本思路是:先将用户反馈抓下来,然后再处理html标签,再调用百度

python制作英语翻译小工具

用python爬虫可以制作英语翻译小工具.来看下代码吧- import requests,json #函数封装 def translator(): session=requests.session() i=input('请问你要翻译什么?') url='http://fanyi.youdao.com/translate' headers={ 'Referer': 'http://fanyi.youdao.com/', 'User-Agent': 'Mozilla/5.0 (Macintosh;

Python实现在线翻译的程序

import urllib.request import urllib.parse import json content=input("想要翻译的英文:") url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.youdao.com/" data={} data["

python 统计单词个数

根据一篇英文文章统计其中单词出现最多的10个单词. # -*- coding: utf-8 -*-import urllib2import refrom collections import Counter '''007之雷霆谷 You Only Live Twice',可以从http://novel.tingroom.com/jingdian/1584/47084.html这个地址获取,列出其中使用最频繁的10个单词,并给出它们的出现次数Python2.7上测试通过''' '''根据URL网址

python爬虫百度翻译

python3,爬取的是百度翻译手机版的网页 运用requests,json模块 英汉互译,运行结果 #!/bin/python3 # -*- coding: UTF-8 -*- #============================================= #describe:an en to zh and zh to en translater #version:1 #update:2018-08-03 #--- #author:unihon #E-mail:[email pr

Python 调用 百度翻译 出现error997 的解决办法

如果程序不报错,其主要原因是百度防爬虫,可能是因为电脑网页版本的百度翻译防爬所致,换用手机版本的百度翻译暂时可行.这也是很多视频都是用手机版百度翻译来讲解的原因: 大多数换用手机版的也会报997错误,或许是手机也防爬虫了吧,如果用get的方法来爬虫是可以的,但是使用post方法是会报997错误的 以下是我的get方法的爬虫代码,大佬们别喷,我刚学: import pprint import requests url = "http://www.baidu.com" response =

一行Python代码——单词逆转

Question Given an input string, reverse the string word by word. For example, Given s = "the sky is blue", return "blue is sky the". Answer def reverseWords(s): return ' '.join(filter(lambda x:x != '', s.split(' '))[::-1]) 详解: s.split(