整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          20行Python代碼擼一個(gè)命令行英語翻譯工具

          常碰到不認(rèn)識(shí)的英文單詞就去有道字典網(wǎng)頁去查查看,每次的過程都是“打開有道網(wǎng)頁->輸入單詞->查看結(jié)果”,這個(gè)過程有點(diǎn)兒繁瑣。可是一直不厭其煩的這樣重復(fù)著,卻不想解決一下。。。直到在微博上面看到有個(gè)人利用有道翻譯API做了個(gè)命令行下面的小工具。可是他是用ruby寫的,對(duì)于Python空來說,這怎么可以呢,于是自己寫一個(gè)吧,很簡單的。

          用python實(shí)現(xiàn)中英文互譯

          有道翻譯API

          http://fanyi.youdao.com/openapi?path=data-mode在這里簡單申請(qǐng)一個(gè)應(yīng)用即可。因?yàn)檫@個(gè)API有每小時(shí)1000次的使用限制,如果都使用我的key就會(huì)出現(xiàn)使用次數(shù)超限的情況。可以自己申請(qǐng)一個(gè)以滿足自己的需求。

          API使用很簡單,傳幾個(gè)參數(shù)做一個(gè)http請(qǐng)求,返回json格式的結(jié)果。

          Python實(shí)現(xiàn)

          具體實(shí)現(xiàn)可以看代碼:https://github.com/veelion/tt

          Python里面做http請(qǐng)求的庫很多,最流行和簡便的是requests,最開始我也選擇了該庫。寫完運(yùn)行的時(shí)候發(fā)現(xiàn),總是要遲鈍一會(huì)兒才會(huì)出結(jié)果。懷疑是requests庫內(nèi)部加載的東西太多,于是換urllib2的urlopen。

          Python 2.7下叫urllib2,到了Python 3下面就沒有該包了,原來Python 3把它放到urllib.request里面去了,為了讓這個(gè)小工具同時(shí)在2和3下面運(yùn)行,于是有了這樣的代碼:

          try:
              # For Python 3
              from urllib.request import urlopen
              from urllib.request import quote
          except ImportError:
              # For Python 2
              from urllib2 import urlopen
              from urllib import quote

          選好http庫就寫一個(gè)函數(shù)來做翻譯工作:

          def trans(q):
              print('translating...')
              url = ('http://fanyi.youdao.com/openapi.do?'
                     'keyfrom=%s&key=%s&type=data&'
                     'doctype=json&version=1.1&'
                     'q=%s') % (YOUDAO_KEYFROM, YOUDAO_KEY, quote(q))
              try:
                  r = urlopen(url)
                  html = r.read()
                  data = json.loads(html)
                  if data['errorCode'] != 0:
                      print(html)
                      return
                  print(BRO)  # 設(shè)置終端字體顏色
                  print("================================")
                  print(u"%s -> %s" % (data['query'], ','.join(data['translation'])))
                  if 'basic' in data:
                      if 'uk-phonetic' in data['basic']:
                          print(u"英式發(fā)音: %s" % data['basic']['uk-phonetic'])
                          print(u"美式發(fā)音: %s" % data['basic']['us-phonetic'])
                      for e in data['basic']['explains']:
                          print(u"%s" % e)
                  if 'web' in data:
                      print("")
                      for e in data['web']:
                          print(u"%s -> %s" % (e['key'], ','.join(e['value'])))
                  print("================================")
                  print(NOR)  # 恢復(fù)終端字體顏色
              except:
                  traceback.print_exc()

          最后,程序從命令行參數(shù)得到要被翻譯的詞,調(diào)用翻譯函數(shù)即可:

          if __name__ == '__main__':
              from sys import argv
              if len(argv) > 1:
                  q = argv[1]
                  trans(q)

          以上就是實(shí)現(xiàn)翻譯小工具的全部過程,很適合初學(xué)python的練手實(shí)現(xiàn)一下。

          安裝和使用

          上面介紹了翻譯小工具的實(shí)現(xiàn)過程,如果你只是想使用的話,我已把它發(fā)布到pypi上了,你只需使用pip命令安裝即可(linux安裝):

          sudo pip install terminaltranslator

          安裝程序會(huì)在/usr/local/bin/下面生成t和tt兩個(gè)簡潔命令工調(diào)用。

          windowns用戶安裝:

          pip install terminaltranslator

          安裝程序會(huì)在python的根目錄Scripts里生成t.exe和tt.exe 。

          使用如下:

          python翻譯英語

          python翻譯中文

          最后

          小編近幾年在學(xué)習(xí)Python!對(duì)于想學(xué)習(xí)Python的朋友們,我想說:很多人學(xué)了一個(gè)星期就放棄了,為什么呢?其實(shí)沒有好的學(xué)習(xí)資料給你去學(xué)習(xí),你們是很難堅(jiān)持的,這是小編收集的Python入門學(xué)習(xí)資料!如下圖回復(fù)01即可獲得!

          TML 標(biāo)題

          HTML 標(biāo)題(Heading)是通過 <h1> - <h6> 等標(biāo)簽進(jìn)行定義的。

          實(shí)例:

          <html>

          <body>

          <h1>張童</h1>

          <h2>張童</h2>

          <h3>張童</h3>

          <h4>張童</h4>

          <h5>張童</h5>

          <h6>張童</h6>

          <p>黃初三年,余朝京師,還濟(jì)洛川。古人有言,斯水之神,名曰宓妃。感宋玉對(duì)楚王神女之事,遂作斯賦。其辭曰:

          余從京域,言歸東藩。背伊闕,越轘轅,經(jīng)通谷,陵景山。日既西傾,車殆馬煩。爾乃稅駕乎蘅皋,秣駟乎芝田,容與乎陽林,流眄乎洛川。于是精移神駭,忽焉思散。俯則未察,仰以殊觀,睹一麗人,于巖之畔。乃援御者而告之曰:“爾有覿于彼者乎?彼何人斯?若此之艷也!”御者對(duì)曰:“臣聞河洛之神,名曰宓妃。然則君王所見,無乃是乎?其狀若何?臣愿聞之。”

          余告之曰:“其形也,翩若驚鴻,婉若游龍。榮曜秋菊,華茂春松。髣髴兮若輕云之蔽月,飄飖兮若流風(fēng)之回雪。遠(yuǎn)而望之,皎若太陽升朝霞;迫而察之,灼若芙蕖出淥波。秾纖得衷,修短合度。肩若削成,腰如約素。延頸秀項(xiàng),皓質(zhì)呈露。芳澤無加,鉛華弗御。云髻峨峨,修眉聯(lián)娟。丹唇外朗,皓齒內(nèi)鮮,明眸善睞,靨輔承權(quán)。瑰姿艷逸,儀靜體閑。柔情綽態(tài),媚于語言。奇服曠世,骨像應(yīng)圖。披羅衣之璀粲兮,珥瑤碧之華琚。戴金翠之首飾,綴明珠以耀軀。踐遠(yuǎn)游之文履,曳霧綃之輕裾。微幽蘭之芳藹兮,步踟躕于山隅。

          于是忽焉縱體,以遨以嬉。左倚采旄,右蔭桂旗。壤皓腕于神滸兮,采湍瀨之玄芝。余情悅其淑美兮,心振蕩而不怡。無良媒以接歡兮,托微波而通辭。愿誠素之先達(dá)兮,解玉佩以要之。嗟佳人之信修,羌習(xí)禮而明詩。抗瓊珶以和予兮,指潛淵而為期。執(zhí)眷眷之款實(shí)兮,懼斯靈之我欺。感交甫之棄言兮,悵猶豫而狐疑。收和顏而靜志兮,申禮防以自持。

          于是洛靈感焉,徙倚彷徨,神光離合,乍陰乍陽。竦輕軀以鶴立,若將飛而未翔。踐椒涂之郁烈,步蘅薄而流芳。超長吟以永慕兮,聲哀厲而彌長。

          爾乃眾靈雜沓,命儔嘯侶,或戲清流,或翔神渚,或采明珠,或拾翠羽。從南湘之二妃,攜漢濱之游女。嘆匏瓜之無匹兮,詠牽牛之獨(dú)處。揚(yáng)輕袿之猗靡兮,翳修袖以延佇。體迅飛鳧,飄忽若神,凌波微步,羅襪生塵。動(dòng)無常則,若危若安。進(jìn)止難期,若往若還。轉(zhuǎn)眄流精,光潤玉顏。含辭未吐,氣若幽蘭。華容婀娜,令我忘餐。

          于是屏翳收風(fēng),川后靜波。馮夷鳴鼓,女媧清歌。騰文魚以警乘,鳴玉鸞以偕逝。六龍儼其齊首,載云車之容裔,鯨鯢踴而夾轂,水禽翔而為衛(wèi)。

          于是越北沚。過南岡,紆素領(lǐng),回清陽,動(dòng)朱唇以徐言,陳交接之大綱。恨人神之道殊兮,怨盛年之莫當(dāng)。抗羅袂以掩涕兮,淚流襟之浪浪。悼良會(huì)之永絕兮,哀一逝而異鄉(xiāng)。無微情以效愛兮,獻(xiàn)江南之明珰。雖潛處于太陰,長寄心于君王。忽不悟其所舍,悵神宵而蔽光。

          于是背下陵高,足往神留,遺情想像,顧望懷愁。冀靈體之復(fù)形,御輕舟而上溯。浮長川而忘返,思綿綿而增慕。夜耿耿而不寐,沾繁霜而至曙。命仆夫而就駕,吾將歸乎東路。攬騑轡以抗策,悵盤桓而不能去。</p>

          </body>

          </html>

          寫abbreviation

          回憶上次折疊的細(xì)節(jié)

          • 這次了解到了:mkview、:loadview
          • 保存和加載視圖
          • 可以把當(dāng)前的狀態(tài)保存下來
          • 可以在 viewoption 中配置保存選項(xiàng),設(shè)置哪些需要保存
          • 還可以保存多個(gè)視圖在整個(gè)文檔中跳來跳去
          • 視圖里面可以有很多本地窗口的設(shè)置折疊縮寫映射
          • 那么到底什么是縮寫(abbreviations)和映射(mappings)呢?

          縮寫就是abbreviations)

          • 縮寫之類的東西我們?cè)缇鸵娺^:se nu:se[t] nu[mber]
          • 不用都打上,打上縮寫形式就自動(dòng)能好使

          • 類似的還有:%s等價(jià)于:%substitute

          縮寫abbreviation

          • 我們可以快速地定義縮寫
          • :abbreviate hi hello這個(gè)時(shí)候如果輸入hi空格hi就自動(dòng)變成了hello不過目前系統(tǒng)配置有點(diǎn)問題

          調(diào)整設(shè)置

          • 當(dāng)前系統(tǒng)配置有點(diǎn)問題
          • 需要看一下 ~/.vimrc

          • 把177這句 set paste 是控制粘貼用的
          • 有的時(shí)候粘貼出來時(shí)對(duì)不齊就用 :set paste
          • 粘貼完之后 :set nopaste
          • 現(xiàn)在我們 :set nopaste 確保縮寫可以用起來

          設(shè)置縮寫

          • 這有點(diǎn)像顏文字轉(zhuǎn)化工具
          • :abbreviate sml ヾ(????)?~還挺好使 哈哈
          • 還可以使用縮寫形式ab:ab o1z oeasy
          • 還可以用來改錯(cuò):ab teh the
          • 不論是在插入模式下,還是在命令行模式下
          • 只要輸入縮寫形態(tài),然后加一個(gè)空格
          • 就自動(dòng)完成切換

          • 這個(gè)東西其實(shí)還是有一定實(shí)用性的:ab sysout System.out.println();不過我可以控制最終的光標(biāo)位置么?

          光標(biāo)的控制

          • 定義新的縮寫:ab sysout System.out.println("");<left><left><left>這樣就可以在快速得到輸出語句之后還把光標(biāo)放在最合適的位置

          • 這樣就可以快速插入一些復(fù)雜的語句
          • 那么這個(gè)可以換行么?

          添加換行符號(hào)

          • :ab htmlbase <html><cr><tab><head></head><cr><body></body><cr><backspace></html><up><right><right>

          • 這樣就可以快速插入一些更大規(guī)模的模板之類的內(nèi)容
          • 目前有什么縮寫abbreviate
          • 可以列表出來么

          列出所有的縮寫abbreviate

          • ab[breviate]可以列出所有的縮寫

          • 第一列代表使用范圍! - 全部模式包括輸入和命令行i - 輸入模式 insertc - 命令行模式 command
          • 單獨(dú)定義某模式下的ab:iab o1z oeasy 只在插入模式下進(jìn)行縮寫替換:cab o1z oeasy 只在命令模式下進(jìn)行縮寫替換:ab o1z oeasy 在全部模式下都能進(jìn)行縮寫替換

          取消縮寫

          • :ab先看看有啥
          • :una o1z

          • 再 :ab 發(fā)現(xiàn)這個(gè)o1z已經(jīng)刪除了
          • 清空 clear
          • :iabc[lear]清空輸入(insert)狀態(tài)下的縮寫abbreviate
          • :cabc[lear]清空命令(command)狀態(tài)下的縮寫abbreviate
          • :abc[lear]清空一切狀態(tài)下的縮寫abbreviate

          • 一個(gè)個(gè)定義映射有點(diǎn)麻煩
          • 我能直接利用曾經(jīng)寫過的單詞么?

          自動(dòng)補(bǔ)全

          • 我們的緩沖中有很多已經(jīng)寫出來的單詞
          • 我們可以用這些來做自動(dòng)補(bǔ)全
          • 我們寫下S然后按下ctrlp出現(xiàn)一個(gè)提示框我們可以選擇里面的單詞ctrlp - previousctrln - next隨著輸入的進(jìn)行還可以縮小查找范圍

          • 這個(gè)東西也是非常實(shí)用的小技巧

          總結(jié)

          • 這次了解到了:abbrivate縮寫
          • 可以定義縮寫:ab o1z oeasy這里面還可以包括方向鍵、回車鍵之類的東西
          • 可以定義到指定的模式iabcab
          • 查看縮寫:ab - 所有的:ab o1z - o1z
          • 自動(dòng)補(bǔ)全ctrlpctrln
          • 這些縮寫都可以保存在視圖里保存的選項(xiàng)在viewoption中
          • 可以保存的除了 縮寫abbreviate 還有個(gè) 映射map
          • 映射map 什么意思呢?
          • 下次再說!

          [Github地址] (https://github.com/overmind1980/oeasyvim)
          [Gitee地址] (overmind1980/oeasyvim)
          [藍(lán)橋?qū)嶒?yàn)樓 邀請(qǐng)碼FJWYIMGB] (oeasy 教您零基礎(chǔ)玩轉(zhuǎn)編輯神器 Vim_Linux 藍(lán)橋云課)


          主站蜘蛛池模板: 成人免费观看一区二区| 久久4k岛国高清一区二区| 精品国产一区二区麻豆| 久久毛片免费看一区二区三区| 精品无码一区二区三区爱欲九九| 丰满人妻一区二区三区免费视频| 亚洲av乱码一区二区三区按摩 | 无码乱码av天堂一区二区| 少妇人妻偷人精品一区二区| 日本一区二区三区在线网| 黑巨人与欧美精品一区| 无码精品尤物一区二区三区| 在线中文字幕一区| 精品无人区一区二区三区| 免费一区二区三区| 夜夜添无码试看一区二区三区 | 亚洲一区在线视频观看| 国产亚洲无线码一区二区| 成人区精品人妻一区二区不卡| 国产高清在线精品一区二区三区| 国产一区韩国女主播| 国产伦精品一区二区三区四区| 成人精品一区二区三区电影| 成人h动漫精品一区二区无码| 中文字幕一区二区三区人妻少妇| 日本一区中文字幕日本一二三区视频| 2021国产精品视频一区| 久久蜜桃精品一区二区三区| 国产一区二区草草影院| 国产嫖妓一区二区三区无码| 无码欧精品亚洲日韩一区夜夜嗨| 日韩精品一区二区三区不卡| 中文字幕在线一区二区三区| 国产精品毛片VA一区二区三区| 亚洲伦理一区二区| 深田咏美AV一区二区三区| 国产一区二区精品在线观看| 一区二区三区四区视频在线| 日韩免费视频一区二区| 国产精品高清一区二区三区不卡 | 国产一区在线视频|