Linux下Python实现有道词典
最近发现,用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实现有道词典相关推荐
- linux下如何使用有道词典
原文地址:http://blog.chinaunix.net/uid-28806348-id-3591914.html 第一步,安装python, 好多系统都自带的了, 输入python, 没有这个命 ...
- linux下超好用的词典.(goldendict)
linux下之前用有道或者谷歌在线翻译,还是嫌麻烦,google发现在linux还有一个超好用的词典goldendict . 安装和使用点我
- linux 下检查硬盘坏道/扇区
http://zhidao.baidu.com/question/238047105.html http://zhangwenxin82.blog.163.com/blog/static/114595 ...
- 在linux下python爬虫进程发生异常时自动重启直至正常结束的方法
在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 参考文章: (1)在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 (2)https://www.cnbl ...
- python有道翻译-Python调用有道词典翻译
Python调用有道词典翻译 分析 翻译按钮 点击翻译按钮,查看网络请求,如图 共有四个网络请求,通过分析,查看返回的信息,显然第一个是真正的翻译请求,具体信息如下: 如图所示,我们真正关注的是请求参 ...
- linux下载哪个python版本-修改linux下python的默认版本
linux下python版本默认为python2.7,下面将通过操作在linux系统下修改python的默认版本. 本文linux系统使用的是ubuntu19. 操作: 1.在shell下输入pyth ...
- Linux下Python脚本自启动与定时任务详解
这篇文章主要给大家介绍了关于Linux下Python脚本自启动与定时任务的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值. 前言 最近同事问了一个关于P ...
- linux下python安装opencv库_Linux下怎么配置python和opencv
匿名用户 1级 2017-06-20 回答 以下说明在Linux下Python和OpenCV结合安装的过程,Python要使用OpenCV模块,则必须导入OpenCV提供的包,所以要提供Python支 ...
- Linux下python安装升级详细步骤 | Python2 升级 Python3
Linux下python升级步骤 Python2 ->Python3 多数情况下,系统自动的Python版本是2.x 或者yum直接安装的也是2.x 但是,现在多数情况下建议使用3.x 那么如 ...
最新文章
- 前后端交互,网络请求
- WebMagic之优秀爬虫框架
- mysql 5.6.20安装_Windows下面安装和配置MySQL(5.6.20)
- 深入浅出Java中的clone克隆方法,写得太棒了!
- mysql目录权限设置_MySQL文件及目录权限设置分析-爱可生
- 干货回顾 | 泛娱乐社交 APP 出海的破与立
- java mockserver搭建_搭建Mock Server
- 高效开发者是如何个性化VS Code插件与配置的?
- 无盘XP系统全套安装说明
- javascript计时秒表简单设计
- linux standby模式,搭建11g 单机 linux standby 操作文档
- 算法上均匀分布的随机抽奖,如何避免现实的现场抽奖的中奖号码有时出现集中扎堆的现象?
- python遍历目录压缩文件夹_zip包含一个档案文件夹,如何使用Python获取存档中每个zip的注释?...
- 局域网联机_局域网联机
- 中国版Second Life前途难料
- 毒论--不要再面向对象(续)
- 消防气体灭火系统(二)
- (VS)c++调用matlab函数
- VAS授权接入开发者文档,全民共创VAS生态
- 计算机专业以后可以学画画吗,计算机影视制作专业需要学画画吗
热门文章
- AIX平台下Commvault无法识别磁带库问题解决方案
- 是男人就下一百层游戏3D版实现
- springboot基于JAVA的“三味书屋”网络书店销售管理系统的设计与实现毕业设计源码111519
- SQLite的limit用法
- cannot import name ‘IterativeImputer‘ from ‘sklearn.impute
- 大数据高级开发工程师——HBase学习笔记(2)
- java 大二学期总结报告_大二 Java上学期总结
- NFS-Ganesha框架学习
- 工作流应用场景简单介绍
- 20230203英语学习