最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 制作自動(dòng)化翻譯工具

 更新時(shí)間:2021年04月25日 16:49:36   作者:月小水長(zhǎng)  
這篇文章主要介紹了Python 實(shí)現(xiàn)自動(dòng)化翻譯和替換的腳本,幫助大家更好的理解和學(xué)習(xí)使用python,提高辦公效率感興趣的朋友可以了解下

媽媽再也不用擔(dān)心我的英語(yǔ)了。

一個(gè)可能你似曾相識(shí)的場(chǎng)景

閱讀內(nèi)容包含大量英文的 PPT、Word、Excel 或者記事本時(shí),由于英語(yǔ)不熟悉,為了流利地閱讀,需要打開(kāi)瀏覽器進(jìn)入谷歌翻譯的主界面,然后把英文復(fù)制到谷歌翻譯的輸入框中,最后又把翻譯結(jié)果復(fù)制回 PPT、Word 和 Excel。

要是一個(gè)兩個(gè)單詞還好,要是發(fā)現(xiàn)有 100 個(gè)單詞不認(rèn)識(shí),就必須復(fù)制粘貼 200 次,如此機(jī)械性重復(fù)性的工作,應(yīng)該交給程序來(lái)做,這就是我設(shè)計(jì)下面這個(gè)自動(dòng)化翻譯工具的初衷。

提升辦公效率的法寶

如上圖,運(yùn)行程序并保持后臺(tái)運(yùn)行,在電腦上的任何一個(gè)軟件中選擇一段文本,并 Ctrl + C 復(fù)制到系統(tǒng)剪貼板中,程序就會(huì)自動(dòng)幫助我們完成翻譯,并將翻譯結(jié)果自動(dòng)復(fù)制到系統(tǒng)剪貼版中,只需 Ctrl + V,就完成了翻譯結(jié)果對(duì)原文的替換。

編碼實(shí)現(xiàn)

程序主要分為兩部分,第一部分為谷歌翻譯爬蟲(chóng),第二部分就是實(shí)現(xiàn)這個(gè)將翻譯結(jié)果自動(dòng)替換的業(yè)務(wù)邏輯。

谷歌翻譯爬蟲(chóng)

通過(guò)瀏覽器 F12 開(kāi)發(fā)者工具,很容易定位到翻譯請(qǐng)求的 URL: http://translate.google.cn/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss &dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2

這個(gè)請(qǐng)求接受兩個(gè)參數(shù),一個(gè)就是我們要翻譯的字符串 q,另一個(gè)是用于用戶認(rèn)證的 tk(token),其中 q 很容易構(gòu)造,tk 的構(gòu)造就需要花費(fèi)一番心力了,需要我們調(diào)試 js 代碼,這里參考 Github 上大神的輪子: https://github.com/cocoa520/Google_TK

谷歌翻譯爬蟲(chóng)的主要代碼如下:

def translate(tk, content):
    if len(content) > 4891:
        print("翻譯的長(zhǎng)度超過(guò)限制!?。?)
        return

    param = {'tk': tk, 'q': content}

    result = requests.get("""http://translate.google.cn/translate_a/single?client=t&sl=en
        &tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss
        &dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2""", params=param)

    data = result.json()
    print(data[0][0][0])

返回結(jié)果是 json 形式的,翻譯結(jié)果保存在結(jié)果的第一個(gè)元組中。

Python 操作系統(tǒng)剪貼板

將讀取剪貼板的內(nèi)容的代碼封裝成函數(shù)如下:

def getText():#讀取剪切板
    # 打開(kāi)剪貼板
    w.OpenClipboard()
    # 讀取剪貼板的內(nèi)容
    d = w.GetClipboardData(win32con.CF_TEXT)
    # 關(guān)閉剪貼板
    w.CloseClipboard()
    try:
        return d.decode('utf-8')
    except:
        return d.decode('gbk')

返回值 d 是字節(jié)類型的,需要解碼,中文按 gbk 格式解碼,英文按 utf-8 解碼。

類似地,寫入剪貼板的代碼如下:

def setText(aString):#寫入剪切板
    # 打開(kāi)剪貼板
    w.OpenClipboard()
    # 清空剪貼板
    w.EmptyClipboard()
    # 寫入剪貼板
    w.SetClipboardText(aString)
    # 關(guān)閉剪貼板
    w.CloseClipboard()

實(shí)現(xiàn)將翻譯結(jié)果自動(dòng)替換原文的邏輯的代碼如下:

while(True):
        # 如果剪貼板正在被占用
        try:
            cs = getText()
        except:
            time.sleep(1)
            cs = getText()
        print('cs',cs)
        if cs and cs != ls:
            print('準(zhǔn)備翻譯')
            content = getText()
            tk = js.getTk(content)
            res = translate(tk, content)
            setText(res)
            time.sleep(1)
            ls = res

值得注意的是,系統(tǒng)剪貼板對(duì)象是單例模式的,在操作系統(tǒng)范圍內(nèi)只有一個(gè),而且讀寫剪貼板都是互斥的,在讀(寫)剪貼板的同時(shí)不允許任何對(duì)剪貼板的寫(讀)操作。試想這樣一種情景,我們?cè)谄渌浖?Ctrl + C 寫入剪貼板,而此時(shí)我們的程序代碼正好執(zhí)行到讀剪貼板那一行,毫無(wú)疑問(wèn)會(huì)報(bào)錯(cuò),我的解決辦法是使用 try…except 語(yǔ)句延時(shí) 1 s再讀取,這樣可以大大降低讀寫碰撞的概率,但無(wú)疑消耗了程序性能。最好的辦法是判斷剪貼板對(duì)象句柄是否被占用,其實(shí)我一直在尋找是否存在判斷剪貼板對(duì)象句柄是否被占用的 API,但是一直沒(méi)有找到

項(xiàng)目地址

https://github.com/Python3Spiders/GoogleAutoTranslationTool

以上就是Python 實(shí)現(xiàn)自動(dòng)化翻譯和替換的腳本的詳細(xì)內(nèi)容,更多關(guān)于python 自動(dòng)化翻譯的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級(jí)隊(duì)列queue用法詳解

    Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級(jí)隊(duì)列queue用法詳解

    queue庫(kù)提供了一個(gè)適用于多線程編程的先進(jìn)先出(FIFO)數(shù)據(jù)結(jié)構(gòu),可以用來(lái)在生產(chǎn)者與消費(fèi)者線程之間安全地傳遞消息或其他數(shù)據(jù),它會(huì)為調(diào)用者處理鎖定,使多個(gè)線程可以安全而更容易地處理同一個(gè)Queue實(shí)例.Queue的大小可能受限,以限制內(nèi)存使用或處理,需要的朋友可以參考下
    2021-05-05
  • python中3種等待元素出現(xiàn)的方法總結(jié)

    python中3種等待元素出現(xiàn)的方法總結(jié)

    發(fā)現(xiàn)太多人不會(huì)用等待了,小編今天實(shí)在是忍不住要給大家講講等待的必要性,下面這篇文章主要給大家介紹了關(guān)于python中3種等待元素出現(xiàn)的方法,需要的朋友可以參考下
    2022-03-03
  • Cython處理C字符串的示例詳解

    Cython處理C字符串的示例詳解

    如果你在使用 Cython 加速 Python 時(shí)遇到了瓶頸,但還希望更進(jìn)一步,那么可以考慮將數(shù)據(jù)的類型替換成 C 的類型,所以本文為大家介紹了Cython處理C字符串的方法,希望對(duì)大家有所幫助
    2023-01-01
  • 基于django channel實(shí)現(xiàn)websocket的聊天室的方法示例

    基于django channel實(shí)現(xiàn)websocket的聊天室的方法示例

    這篇文章主要介紹了基于基于django channel實(shí)現(xiàn)websocket的聊天室的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • 500行Python代碼打造刷臉考勤系統(tǒng)

    500行Python代碼打造刷臉考勤系統(tǒng)

    本文給大家分享通過(guò)500行Python代碼打造刷臉考勤系統(tǒng),代碼超級(jí)簡(jiǎn)單,感興趣的朋友跟隨小編一起看看吧
    2019-06-06
  • 使用Python的PIL如何將數(shù)組輸出圖像

    使用Python的PIL如何將數(shù)組輸出圖像

    這篇文章主要介紹了使用Python的PIL如何將數(shù)組輸出圖像問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Django模型序列化返回自然主鍵值示例代碼

    Django模型序列化返回自然主鍵值示例代碼

    這篇文章主要給大家介紹了關(guān)于Django模型序列化返回自然主鍵值的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python的Flask框架中的Jinja2模板引擎學(xué)習(xí)教程

    Python的Flask框架中的Jinja2模板引擎學(xué)習(xí)教程

    這篇文章主要介紹了Python的Flask框架中的Jinja2模板引擎學(xué)習(xí)教程,Jinja2模板引擎的用法也是Flask的Web開(kāi)發(fā)中的重要知識(shí),需要的朋友可以參考下
    2016-06-06
  • 使用Python進(jìn)行數(shù)據(jù)可視化

    使用Python進(jìn)行數(shù)據(jù)可視化

    本文主要介紹了使用Python進(jìn)行數(shù)據(jù)可視化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • django實(shí)現(xiàn)更改數(shù)據(jù)庫(kù)某個(gè)字段以及字段段內(nèi)數(shù)據(jù)

    django實(shí)現(xiàn)更改數(shù)據(jù)庫(kù)某個(gè)字段以及字段段內(nèi)數(shù)據(jù)

    這篇文章主要介紹了django實(shí)現(xiàn)更改數(shù)據(jù)庫(kù)某個(gè)字段以及字段段內(nèi)數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03

最新評(píng)論

博乐市| 吉水县| 呼图壁县| 敦煌市| 凤山市| 元谋县| 江孜县| 平利县| 浦北县| 大厂| 江孜县| 旬邑县| 农安县| 平遥县| 隆尧县| 陇南市| 广河县| 衡东县| 新建县| 肃南| 武威市| 安多县| 溆浦县| 内丘县| 枣阳市| 辉南县| 德庆县| 松原市| 山阳县| 剑河县| 肇东市| 桃江县| 浪卡子县| 林西县| 准格尔旗| 新蔡县| 桦甸市| 迁安市| 阿荣旗| 博爱县| 阜平县|