Python实现命令行有道词典工具
本文介绍如何使用Python编写一个简单的命令行有道词典工具。通过调用有道开放API并解析返回的JSON数据,实现单词或句子的翻译功能。代码兼容Python 2和3,只需将脚本放置于系统路径并赋予执行权限即可使用,适合Linux用户快速查阅英文文档。
前言
由于长期在Linux系统下工作,词典支持功能相对薄弱。对于英语基础较弱的用户而言,阅读英文文档时常遇障碍。此前习惯使用的有道词典体验良好,但其网页版无法直接支持全站英文网页的翻译需求。因此,决定自行开发一款基于Python的小工具,通过直接调用有道API并解析返回的JSON数据来实现翻译功能,思路简洁明了。
该工具仅依赖Python原生库,同时支持Python 2和Python 3环境。
示例代码
#!/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.py。
执行命令mv youdao.py youdao以修改名称,随后使用chmod a+x youdao命令添加可执行权限。
将文件拷贝至/usr/local/bin目录,具体操作为cp youdao /usr/local/bin。
使用时,将需要翻译的单词作为第一个命令行参数传入;若需翻译句子,请使用引号将其括起。

总结
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













