Python实现命令行有道词典工具

Theo
Theo
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍如何使用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。

使用时,将需要翻译的单词作为第一个命令行参数传入;若需翻译句子,请使用引号将其括起。

总结

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表