Python實(shí)現(xiàn)單詞翻譯功能
在進(jìn)行英文文獻(xiàn)閱讀時(shí),經(jīng)常會(huì)出現(xiàn)一些不認(rèn)識(shí)的單詞,但對(duì)于一些pdf閱讀器,比如Foxit閱讀器使用翻譯功能需要點(diǎn)擊(Extra->Translate),并且啟用了翻譯功能將不能使用注釋功能,這對(duì)于閱讀者來(lái)說(shuō)將是極不方便的。所以為了方便查詢(xún)單詞,自己開(kāi)發(fā)了個(gè)Windows環(huán)境下的Python程序用于監(jiān)控并查詢(xún)單詞,而只需的操作就是選中單詞并按Ctrl+C即可。
該P(yáng)ython程序主要分為三部分:從另外一個(gè)應(yīng)用程序中獲取需要查詢(xún)的單詞,單詞翻譯和單詞顯示。
從另外一個(gè)應(yīng)用程序中獲取需要查詢(xún)的單詞涉及到進(jìn)程間通信,在Windows上最簡(jiǎn)單的方法是使用Clipboard功能。Python中有多種方式可以使用剪切板,比如使用win32clipboard(Python使用剪切板的方法)。這里使用的是Qt實(shí)現(xiàn)的clipboard,Qt的剪切板實(shí)現(xiàn)支持當(dāng)系統(tǒng)剪切板內(nèi)容發(fā)生改變時(shí)回調(diào)。具體實(shí)現(xiàn):
# 獲取Qt的剪切板并綁定回調(diào)函數(shù) self.clipboard = QApplication.clipboard() self.clipboard.dataChanged.connect(self.on_clipboard_changed)
# 回調(diào)函數(shù) 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)
單詞翻譯直接調(diào)用有道單詞翻譯,單詞翻譯的鏈接格式為http://dict.youdao.com/w/{}/,其中{}為需要查詢(xún)的單詞。獲取的將是單個(gè)網(wǎng)頁(yè),使用BeautifulSoup提取最終的翻譯結(jié)果。
def queryWords(word):
''' 利用有道翻譯查詢(xún)單詞 '''
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
最后顯示是通過(guò)Qt編寫(xiě)的界面,原本是想查詢(xún)到單詞后,界面窗口自動(dòng)激活并移動(dòng)到最前端,但Windows不允許未經(jīng)用戶(hù)操作而將窗口移動(dòng)到最前端,所以最后只是通過(guò)激活窗口提示用戶(hù)。

完整的代碼位于https://github.com/llf2017/pyDict/blob/master/pyDict.py
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python翻譯軟件實(shí)現(xiàn)代碼(使用google api完成)
- python自動(dòng)翻譯實(shí)現(xiàn)方法
- python3使用urllib示例取googletranslate(谷歌翻譯)
- python在命令行下使用google翻譯(帶語(yǔ)音)
- 使用Python3中的gettext模塊翻譯Python源碼以支持多語(yǔ)言
- python使用百度翻譯進(jìn)行中翻英示例
- 使用Python從有道詞典網(wǎng)頁(yè)獲取單詞翻譯
- 用Python編寫(xiě)一個(gè)基于終端的實(shí)現(xiàn)翻譯的腳本
- python利用有道翻譯實(shí)現(xiàn)"語(yǔ)言翻譯器"的功能實(shí)例
- python3調(diào)用百度翻譯API實(shí)現(xiàn)實(shí)時(shí)翻譯
相關(guān)文章
基于TensorFlow常量、序列以及隨機(jī)值生成實(shí)例
今天小編就為大家分享一篇基于TensorFlow常量、序列以及隨機(jī)值生成實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
Django零基礎(chǔ)入門(mén)之自定義過(guò)濾器及模板中的使用
這篇文章主要介紹了Django零基礎(chǔ)入門(mén)之自定義過(guò)濾器及模板中的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
Python爬蟲(chóng)實(shí)現(xiàn)抓取京東店鋪信息及下載圖片功能示例
這篇文章主要介紹了Python爬蟲(chóng)實(shí)現(xiàn)抓取京東店鋪信息及下載圖片功能,涉及Python頁(yè)面請(qǐng)求、響應(yīng)、解析等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
python 實(shí)現(xiàn)矩陣按對(duì)角線(xiàn)打印
今天小編就為大家分享一篇python 實(shí)現(xiàn)矩陣按對(duì)角線(xiàn)打印,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
Python爬蟲(chóng)獲取整個(gè)站點(diǎn)中的所有外部鏈接代碼示例
這篇文章主要介紹了Python爬蟲(chóng)獲取整個(gè)站點(diǎn)中的所有外部鏈接代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下2017-12-12
基于Python實(shí)現(xiàn)簡(jiǎn)易的動(dòng)漫圖片轉(zhuǎn)換器
本文旨在利用Python語(yǔ)言制作一個(gè)將普通照片轉(zhuǎn)換成動(dòng)漫圖片的小工具,其中使用opencv的非標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)對(duì)圖片完成轉(zhuǎn)換,感興趣的可以嘗試一下2022-08-08
python獲取list下標(biāo)及其值的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇python獲取list下標(biāo)及其值的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
pandas DataFrame 賦值的注意事項(xiàng)說(shuō)明(index)
這篇文章主要介紹了pandas DataFrame 賦值的注意事項(xiàng)說(shuō)明(index),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04

