锁定老帖子 主题:用Python写个翻译工具
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-11-22
在英语词典方面,Linux环境下的软件远不及Win环境下,由于工作一般都在Linux环境下,并且希望在堆码的时候不用离开vim编辑器,于是花了一
点时间写了个翻译的小工具,主要方便我在Linux环境下遇到不认识的英语单词时充当翻译小助手。这个小工具使用Python语言编写完成,其中使用到这
些类库(urllib,BeautifulSoup
),前者主要负责网络通讯方面,后者负责HTML的解析。这也是Python语言生态圈的强大之处,写个这样的小工具,毫不费力。 import urllib import codecs from BeautifulSoup import BeautifulSoup from sys import argv import re,time class Translate: def Start(self): self._get_html_sourse() self._get_content("enc") self._remove_tag() self.print_result() def _get_html_sourse(self): word=argv[1] if len(argv)>1 else '' url="http://dict.baidu.com/s?wd=%s&tn=dict" % word self.htmlsourse=unicode(urllib.urlopen(url).read(),"gb2312","ignore").encode("utf-8","ignore") def _get_content(self,div_id): soup=BeautifulSoup("".join(self.htmlsourse)) self.data=str(soup.find("div",{"id":div_id})) def _remove_tag(self): soup=BeautifulSoup(self.data) self.outtext=''.join([element for element in soup.recursiveChildGenerator() if isinstance(element,unicode)]) def print_result(self): for item in range(1,10): self.outtext=self.outtext.replace(str(item),"\n%s" % str(item)) self.outtext=self.outtext.replace(" ","\n") print self.outtext if __name__=="__main__": Translate().Start()
如果您的运行环境安装了BeautifulSoup类库,那么执行类似这样的命令:Python Translate.py computer,您将会看到下面这样的结果:
后记,目前这个小工具在输出排版方面还不太满意。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-11-26
我觉得把python默认方法命名规范的_ 和__ 看着我很蛋疼,为啥不加个关键字捏。
|
|
返回顶楼 | |
发表时间:2010-11-26
python 语法格式、命名规则,缩进真让崩溃
|
|
返回顶楼 | |
发表时间:2010-11-26
看到她,不排斥,您就会喜欢上她。~-~
|
|
返回顶楼 | |
发表时间:2010-11-26
蛋疼真的!!!
|
|
返回顶楼 | |
发表时间:2010-11-26
其实,python最不蛋疼的地方就是缩进
|
|
返回顶楼 | |
发表时间:2010-11-26
楼主的分享精神值得鼓励!
|
|
返回顶楼 | |
发表时间:2010-11-26
学习了,最近也在学python
|
|
返回顶楼 | |
发表时间:2010-11-26
既然在Linux下面,shell脚本也是一个宝贝啊,我奉上一个短的:
translate() { wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$1&langpair=${2:-en}|${3:-zh}" | sed -E -n 's/[[:alnum:]": {}]+"translatedText":"([^"]+)".*/\1/p'; return 0; } 把这段函数放到你的~/.bashrc或者~/.zshrc里面,就可以这样用了: $ translate hello 你好 $ translate hello en es hola $ translate "very good" 非常好 |
|
返回顶楼 | |
发表时间:2010-11-26
最后修改:2010-11-27
trace 写道 既然在Linux下面,shell脚本也是一个宝贝啊,我奉上一个短的:
translate() { wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$1&langpair=${2:-en}|${3:-zh}" | sed -E -n 's/[[:alnum:]": {}]+"translatedText":"([^"]+)".*/\1/p'; return 0; } 把这段函数放到你的~/.bashrc或者~/.zshrc里面,就可以这样用了: $ translate hello 你好 $ translate hello en es hola $ translate "very good" 非常好 狂赞,wget + sed 太强了。 Hi , 能指导一下 wget 的参数选项 -q0- 表示什么? sed 的 -E 参数是么意思? |
|
返回顶楼 | |