前言
由於一直用Linux系統,對於詞典的支持特別不好,對於我這英語渣渣的人來說,當看英文文檔就一直卡殼,之前用慣了有道詞典,感覺很不錯,雖然有網頁版的但是對於全站英文的網頁來說並不支援。索性自己實作一個,基於Python編寫的小工具實作有道字典,思路也很簡單,直接呼叫有道的api,解析下回傳的json就ok了。
只用到了python原生的函式庫,支援python2和python3.
範例程式碼
#!/usr/bin/env python # -*- coding:utf-8 -*- # API key:273646050 # keyfrom:11pegasus11 import json import sys try: # py3 from urllib.parse import urlparse, quote, urlencode, unquote from urllib.request import urlopen except: # py2 from urllib import urlencode, quote, unquote from urllib2 import urlopen def fetch(query_str=''): query_str = query_str.strip("'").strip('"').strip() if not query_str: query_str = 'python' print(query_str) query = { 'q': query_str } url = 'http://fanyi.youdao.com/openapi.do?keyfrom=11pegasus11&key=273646050&type=data&doctype=json&version=1.1&' + urlencode(query) response = urlopen(url, timeout=3) html = response.read().decode('utf-8') return html def parse(html): d = json.loads(html) try: if d.get('errorCode') == 0: explains = d.get('basic').get('explains') for i in explains: print(i) else: print('无法翻译') except: print('翻译出错,请输入合法单词') def main(): try: s = sys.argv[1] except IndexError: s = 'python' parse(fetch(s)) if __name__ == '__main__': main()
使用
將上面程式碼貼後命名為youdao.pyo.可執行權限chmod a+x youdao
拷貝到/usr/local/bin。 cp youdao /usr/local/bin
使用的時候把要翻譯的單字當作第一個命令列參數,要是句子用引號括起來。
總結
以上就是這篇問文章的全部內容了,希望本文的內容對大家的學習或工作能帶來一定的幫助,如果有疑問大家可以留言交流。 更多利用python實現命令列有道詞典的方法範例相關文章請關注PHP中文網!