锁定老帖子 主题:用Python写个翻译工具
精华帖 (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 |
|
返回顶楼 | |
发表时间:2010-11-27
老运行不成功,需要安装些什么?
|
|
返回顶楼 | |
发表时间:2010-11-27
loovle 写道 老运行不成功,需要安装些什么?
bash的那个程序不需安装任何东西的 ,python翻译程序是需要安装库的。 /usr/lib/python2.6/urllib.py已经有了, BeautifulSoup这个库需要安装。 下载tar包后解压,到BeautifulSoup-*.*目录下,执行如下命令安装, python setup.py install |
|
返回顶楼 | |
发表时间:2010-11-27
难道其它的语言就不缩进了?
|
|
返回顶楼 | |
发表时间: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" 非常好 这个灰常好~ |
|
返回顶楼 | |
发表时间: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就不能被解析。 |
|
返回顶楼 | |
发表时间:2010-11-28
lz的ubuntu用的是什么中文字体?
|
|
返回顶楼 | |
发表时间:2010-11-29
强制缩进是合宜的,要不代码怎能条理分明呢
|
|
返回顶楼 | |
发表时间: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 是神马。 |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |