论坛首页 编程语言技术论坛

用Python写个翻译工具

浏览 20117 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-11-27  
#!/bin/bash
        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';
echo  -e ""

保存为ts文件,放在/usr/bin/目录下,在命令行直接ts hello 

0 请登录后投票
   发表时间:2010-11-27  
老运行不成功,需要安装些什么?
0 请登录后投票
   发表时间:2010-11-27  
loovle 写道
老运行不成功,需要安装些什么?

bash的那个程序不需安装任何东西的 ,python翻译程序是需要安装库的。

/usr/lib/python2.6/urllib.py已经有了,
BeautifulSoup这个库需要安装。
下载tar包后解压,到BeautifulSoup-*.*目录下,执行如下命令安装,
python setup.py install 

0 请登录后投票
   发表时间:2010-11-27  
难道其它的语言就不缩进了?
0 请登录后投票
   发表时间:2010-11-28  
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"
非常好



这个灰常好~
0 请登录后投票
   发表时间:2010-11-28  
qwe_rt 写道
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 参数是么意思?


wget:
-q表示关闭请求过程中的状态输出,只显示响应的内容。
-O - 表示把响应的内容写到stdout,而不是文件,如果用 -O mfile.html 就表示保存到文件myfile.html
一般上面两个参数会合起来写成-qO-

sed:
-E选项表示使用扩展的正则表达式。bash原生的正则表达式语法规则比较少。下面的命令就可以看出来。
$ echo "nice to meet you" | grep "me{1,2}t"
# 没有输出,表示没匹配到
$ echo "nice to meet you" | grep -E "me{1,2}t"
nice to meet you  # 有输出,表示找到了匹配

在translate函数里面,如果不加-E,正则表达式里的\1就不能被解析。
0 请登录后投票
   发表时间:2010-11-28  
lz的ubuntu用的是什么中文字体?
0 请登录后投票
   发表时间:2010-11-29  
强制缩进是合宜的,要不代码怎能条理分明呢
0 请登录后投票
   发表时间:2010-11-30  
trace 写道


wget:
-q表示关闭请求过程中的状态输出,只显示响应的内容。
-O - 表示把响应的内容写到stdout,而不是文件,如果用 -O mfile.html 就表示保存到文件myfile.html
一般上面两个参数会合起来写成-qO-

sed:
-E选项表示使用扩展的正则表达式。bash原生的正则表达式语法规则比较少。下面的命令就可以看出来。
$ echo "nice to meet you" | grep "me{1,2}t"
# 没有输出,表示没匹配到
$ echo "nice to meet you" | grep -E "me{1,2}t"
nice to meet you  # 有输出,表示找到了匹配

在translate函数里面,如果不加-E,正则表达式里的\1就不能被解析。

引用
The documents will not be written to the appropriate files, but all
           will be concatenated together and written to file.  If - is used as
           file, documents will be printed to standard output, disabling link
           conversion.  (Use ./- to print to a file literally named -.)

看了下man手册,的确哈,但是对于参数-q 文档说的不详细了。
引用
-q
       --quiet
           Turn off Wget's output.

不懂Wget's output 是神马。
0 请登录后投票
   发表时间:2010-11-30  
Without -q:
$ wget http://www.iteye.com
--2010-11-30 13:30:20--  http://www.iteye.com/
Resolving www.iteye.com... 61.151.241.121
Connecting to www.iteye.com|61.151.241.121|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2095 (2.0K) [text/html]
Saving to: `index.html.2'

100%[==================================================================================================================>] 2,095       --.-K/s   in 0.001s  

2010-11-30 13:30:20 (1.51 MB/s) - `index.html' saved [2095/2095]


With -q:
wget -q http://www.iteye.com
# Nothing output
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics