最近发现,用Linux系统比Window的工作和学习效率高多了,做任何事情都更直接有效, 而且现在绝大部分应用都是基于WEB的;所以,以后尽量用Linux了. 以下是用Python脚本实现的有道词典. 当然是参考了大牛的代码, 其中有某些部分出了点问题, 一是正则匹配, 二是颜色输出.

  Python代码的主要流程:

    a. 带输入查询词调有道的WEB API
       b. 使用正则匹配得到翻译内容
    c. 格式化输出结果, 若需要配置颜色, 增加相应的shell配色参数.

1. Python代码

  1 #! /usr/bin/python    2 import re;    3 import urllib;    4 import urllib2;    5 import sys;    6 def debug():    7     xml = open("word.xml").read();    8     print get_text(xml);    9     print get_elements_by_path(xml, "custom-translation/content");   10     #print_translations(xml, False, False);   11  12 def get_elements_by_path(xml, elem):   13     if type(xml) == type(''):   14         xml = [xml];   15     if type(elem) == type(''):   16         elem = elem.split('/');   17     if (len(xml) == 0):   18         return [];   19     elif (len(elem) == 0):   20         return xml;   21     elif (len(elem) == 1):   22         result = [];   23         for item in xml:   24             result += get_elements(item, elem[0]);   25         return result;   26     else:   27         subitems = [];   28         for item in xml:   29             subitems += get_elements(item, elem[0]);   30         return get_elements_by_path(subitems, elem[1:]);   31  32 textre = re.compile("<\!\[CDATA\[(.*?)\]\]", re.DOTALL);   33 def get_text(xml):   34     #print 10*"..."+"\n" 35     match = re.search(textre, xml);   36     if not match:   37         return xml;   38     #print 40*"..." 39     #print match 40     #print 40*"..." 41     return match.group(1);   42  43 def get_elements(xml, elem):   44     p = re.compile("<" + elem + ">" + "(.*?)</" + elem + ">", re.DOTALL);   45     it = p.finditer(xml);   46     result = [];   47     for m in it:   48         result.append(m.group(1));   49     return result;   50  51 GREEN = "\033[1;32m";   52 DEFAULT = "\033[0;49m";   53 BOLD = "\033[1m";   54 UNDERLINE = "\033[4m";   55 NORMAL = "\033[m";   56 RED = "\033[1;31m"   57  58 def crawl_xml(queryword):   59     return urllib2.urlopen("http://dict.yodao.com/search?keyfrom=dict.python&q=" + urllib.quote_plus(queryword) + "&xmlDetail=true&doctype=xml").read();   60  61 def print_translations(xml, with_color, detailed):   62     #print xml;   63     original_query = get_elements(xml, "original-query");   64     queryword = get_text(original_query[0]);   65     custom_translations = get_elements(xml, "custom-translation");   66     print BOLD + UNDERLINE + queryword + NORMAL;   67     translated = False;   68  69     for cus in custom_translations:   70         source = get_elements_by_path(cus, "source/name");   71  72         print RED + "Translations from " + source[0] + DEFAULT;   73         contents = get_elements_by_path(cus, "translation/content");   74         if with_color:   75             for content in contents[0:5]:   76                 print GREEN + get_text(content) + DEFAULT;   77         else:   78             for content in contents[0:5]:   79                 print get_text(content);   80         translated = True;   81     yodao_translations = get_elements(xml, "yodao-web-dict");   82     printed = False;   83     for trans in yodao_translations:   84         webtrans = get_elements(trans, "web-translation");   85         for web in webtrans[0:5]:   86             if not printed:   87                 print RED + "Translations from yodao:" + DEFAULT;   88                 printed = True;   89                 keys = get_elements(web, "key");   90             values = get_elements_by_path(web, "trans/value");   91             summaries = get_elements_by_path(web, "trans/summary");   92             key = keys[0].strip();   93             value = values[0].strip();   94             #summary = summaries[0].strip();   95                 #lines = get_elements(summary, "line");   96             if with_color:   97                 print BOLD +  get_text(key) + ":\t" +DEFAULT + GREEN + get_text(value) + NORMAL;   98                 #for line in lines:   99                 #    print GREEN + get_text(line) + DEFAULT;  100                 #print get_text(summary) + DEFAULT;  101             else:  102                 print get_text(value);  103                 #print get_text(summary);  104                     #translated = True;  105                     #if not detailed:  106                     #        break  107 108 def usage():  109     print "usage: dict.py word_to_translate";  110 def main(argv):  111     if len(argv) <= 0:  112         usage();  113         #debug();  114         sys.exit(1);  115     xml = crawl_xml("".join(argv));  116     print_translations(xml, True, False);  117     #print_translations(xml, True, True);  118     #print_translations(xml, False, False);  119 120 if __name__ == "__main__":  121     main(sys.argv[1:]);  

2. 添加Shell脚本

1 #!/bin/bash2 echo -n "input:";3 while read input;4 do5     python dict.py ${input};6     echo -n "input:";7 done

全文完

转载于:https://www.cnblogs.com/nwf5d/archive/2011/11/20/2255674.html

Linux下Python实现有道词典相关推荐

  1. linux下如何使用有道词典

    原文地址:http://blog.chinaunix.net/uid-28806348-id-3591914.html 第一步,安装python, 好多系统都自带的了, 输入python, 没有这个命 ...

  2. linux下超好用的词典.(goldendict)

    linux下之前用有道或者谷歌在线翻译,还是嫌麻烦,google发现在linux还有一个超好用的词典goldendict . 安装和使用点我

  3. linux 下检查硬盘坏道/扇区

    http://zhidao.baidu.com/question/238047105.html http://zhangwenxin82.blog.163.com/blog/static/114595 ...

  4. 在linux下python爬虫进程发生异常时自动重启直至正常结束的方法

    在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 参考文章: (1)在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 (2)https://www.cnbl ...

  5. python有道翻译-Python调用有道词典翻译

    Python调用有道词典翻译 分析 翻译按钮 点击翻译按钮,查看网络请求,如图 共有四个网络请求,通过分析,查看返回的信息,显然第一个是真正的翻译请求,具体信息如下: 如图所示,我们真正关注的是请求参 ...

  6. linux下载哪个python版本-修改linux下python的默认版本

    linux下python版本默认为python2.7,下面将通过操作在linux系统下修改python的默认版本. 本文linux系统使用的是ubuntu19. 操作: 1.在shell下输入pyth ...

  7. Linux下Python脚本自启动与定时任务详解

    这篇文章主要给大家介绍了关于Linux下Python脚本自启动与定时任务的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值. 前言 最近同事问了一个关于P ...

  8. linux下python安装opencv库_Linux下怎么配置python和opencv

    匿名用户 1级 2017-06-20 回答 以下说明在Linux下Python和OpenCV结合安装的过程,Python要使用OpenCV模块,则必须导入OpenCV提供的包,所以要提供Python支 ...

  9. Linux下python安装升级详细步骤 | Python2 升级 Python3

    Linux下python升级步骤  Python2 ->Python3 多数情况下,系统自动的Python版本是2.x 或者yum直接安装的也是2.x 但是,现在多数情况下建议使用3.x 那么如 ...

最新文章

  1. 前后端交互,网络请求
  2. WebMagic之优秀爬虫框架
  3. mysql 5.6.20安装_Windows下面安装和配置MySQL(5.6.20)
  4. 深入浅出Java中的clone克隆方法,写得太棒了!
  5. mysql目录权限设置_MySQL文件及目录权限设置分析-爱可生
  6. 干货回顾 | 泛娱乐社交 APP 出海的破与立
  7. java mockserver搭建_搭建Mock Server
  8. 高效开发者是如何个性化VS Code插件与配置的?
  9. 无盘XP系统全套安装说明
  10. javascript计时秒表简单设计
  11. linux standby模式,搭建11g 单机 linux standby 操作文档
  12. 算法上均匀分布的随机抽奖,如何避免现实的现场抽奖的中奖号码有时出现集中扎堆的现象?
  13. python遍历目录压缩文件夹_zip包含一个档案文件夹,如何使用Python获取存档中每个zip的注释?...
  14. 局域网联机_局域网联机
  15. 中国版Second Life前途难料
  16. 毒论--不要再面向对象(续)
  17. 消防气体灭火系统(二)
  18. (VS)c++调用matlab函数
  19. VAS授权接入开发者文档,全民共创VAS生态
  20. 计算机专业以后可以学画画吗,计算机影视制作专业需要学画画吗

热门文章

  1. AIX平台下Commvault无法识别磁带库问题解决方案
  2. 是男人就下一百层游戏3D版实现
  3. springboot基于JAVA的“三味书屋”网络书店销售管理系统的设计与实现毕业设计源码111519
  4. SQLite的limit用法
  5. cannot import name ‘IterativeImputer‘ from ‘sklearn.impute
  6. 大数据高级开发工程师——HBase学习笔记(2)
  7. java 大二学期总结报告_大二 Java上学期总结
  8. NFS-Ganesha框架学习
  9. 工作流应用场景简单介绍
  10. 20230203英语学习