linux下面使用终端,有的时候需要查找一个单词,都需要打开浏览器通过网页来查找单词,这样效率会会非常的繁琐,并且也会降低工作效率。
之前刚开始看python文档的时候,看过别人说的一个用python写的在终端下查单词的脚本,当时没记录下来,后来也没找到。
今天本来是想解决我网站的显示的问题,但是想到这个不做了就感觉哪里不对,一股强迫症的感觉。。
自己用python写了一个脚本,用的是有道翻译的api,感谢有道。
使用方法为,python youdao.py word ,单词 word为你要查询的单词。
下面贴代码:
import sys from urllib.request import urlopen from html.parser import HTMLParser def get_result(word): url = 'http://fanyi.youdao.com/openapi.do?keyfrom=majunzhe&key=27448872&type=data&doctype=xml&version=1.1&q=' query_url = url + word result = urlopen(query_url).read().decode('utf-8') return result class WordResultParser(HTMLParser): bHandled = False bExplain = False data_meaning = '' output = '' tags = ('phonetic', 'ex', 'key') def parse_data(self, data): beg_pos = data.rfind('[') + 1 end_pos = data.find(']', beg_pos, len(data)) if end_pos == -1: end_pos = len(data) #print(beg_pos) #print(end_pos) #print(data) self.data_meaning = data[beg_pos:end_pos] def handle_starttag(self, tag, attrs): if 'basic' == tag: self.output += '基本释义:\n' elif 'web' == tag: self.output += '网络释义:\n' elif 'explain' == tag: self.bExplain = True if tag in self.tags: self.bHandled = True def handle_endtag(self, tag): if 'explain' == tag: self.output += '\n' self.bExplain = False def unknown_decl(self, data): if self.bHandled != True: return self.parse_data(data) endstr = '\n' if self.bExplain: endstr = ' ' self.output += self.data_meaning + endstr self.bHandled = False def print_results(): for word in sys.argv[1:]: #print('-------------------------------------------------------------') # get the query result word_result = get_result(word) #print(word_result) word_parser = WordResultParser() word_parser.feed(word_result) print(word_parser.output[:-2]) #print('-------------------------------------------------------------') print_results()
大致步骤是这样的:
1 首先明白有道翻译api的使用方法,具体步骤可以在官网上面查看,但是使用api之前要申请一个 key。
2 通过python的库来打开url,并通过解析 返回的数据得到查询结果,我使用的是 python 库 HTMLParser来解析数据的。
3 在linux下再进行简单的配置下,就可以直接在像使用其他的命令行来使用这个脚本了。
这个脚本我设置了一次能查询多个单词的功能。
下面是在linux下面的配置步骤:
1 首先把上面的python代码存成一个名为 youdao.py的文件,我把这个文件放置在 ~/Documents 文件夹下
2 再在 ~/ 文件夹下创建一个 脚本 , 文件命名为 youdao
#!/bin/bash while [ $# -ne 0 ] do python Documents/youdao.py $1 shift done其中的while语句是用来一次查询多个单词使用的
3 当完成了上述的步骤之后,就可以./youdao xxx, 这样的查询单词了。
但是我们这样用着肯定不方便的。那就将这个脚本链接到/usr/bin 下。
sudo ln -s ~/youdao /usr/bin/youdao
4 完成。
下面就可以尽情在命令行下面查询单词了,没有添加查询句子的功能,觉得没啥用,一般都是查一个单词的,一次查多个单词的功能还是为了以防万一。
哈哈
个人网站为:www.majunzhe.com
原文:http://blog.csdn.net/jiangxiaoma111/article/details/38461447