用Python编写一个基于终端的实现翻译的脚本


Posted in Python onApril 24, 2015

为什么写这个程序,为什么不给这个程序配备gui?原因很简单,因为我是一个命令行控,Linux习惯了不习惯了鼠标,总觉得点着不如敲命令快,各位在看这篇文章就说明和本人有相同的爱好.这个用python写的翻译工具是通过google来实现的,由于google返回的数据不是很规范(或者说我没有找到规律),现在前三项能正常显示(源词,翻译结果,和汉语拼音).下面的词性和其他释义可能不同,见谅,望大神可以指点下小弟和帮小弟完善,这里赶紧不尽.

好了不费话了,下面放代码:

#!/usr/bin/env python
# -*-coding:utf8 -*-
'''
#=============================================================================
#   FileName: translate.py
#     Desc: To translate with zh to en or en2zh
#    Author: cold
#    Email: wh_linux@126.com
#   HomePage: http://www.linuxzen.com
#   Version: 0.0.1
#  LastChange: 2012-04-23 23:04:08
#   History:
#=============================================================================
'''

import urllib
import urllib2
from sys import argv,exit
import re

# 显示帮助信息
def helpinfo():
print '''
Usage: pytran {zh2en|en2zh} content
'''
# 格式化输出
def formatresult(result,srclang):
resu = result.split('[[')
if (srclang=='en2zh' or srclang == 'zh2en'):
firstre = resu[1].replace('[','').replace(']','').split('"')
print '源词:',firstre[3]
print '结果:',firstre[1]
if (srclang=='zh2en'):
piny = firstre[7]
else:
piny = firstre[5]
print '拼音:',piny
if(srclang=='zh2en'):
secresu=resu[2].replace('"','').split('[')
else:
secresu = resu[2].replace('"', '').split('[')
print '词性:',secresu[0].replace(',','')
print '其他释义:'
for i in ''.join(secresu[1].split(']')).split(','):
print i

# 获取命令行参数
try:
srclang = argv[1]
except:
helpinfo()
exit(1)
try:
cont = argv[2]
except:
helpinfo()
exit(2)

# 判断翻译目标语言用来确定传送参数
if(srclang == 'zh2en'):
data=urllib.urlencode({'client':'t', 'text':cont,
'hl':'zh-CN','tl':'en',
'multires':'1','prev':'btn',
'ssel':'0','sc':'1'})
elif(srclang == 'en2zh'):
data=urllib.urlencode({'client':'t', 'text':cont,
'hl':'zh-CN', 'sl':'en','tl':'zh-CN',
'multires':'1', 'prev':'btn',
'ssel':'0','sc':'1'})
else:
helpinfo()

# 打开google翻译内容
url = 'http://translate.google.cn/translate_a/t'
req =urllib2.Request(url,data)
req.add_header("User-Agent", "Mozilla/5.0+(compatible;+Googlebot/2.1;++http://www.google.com/bot.html)")
fd = urllib2.urlopen(req)
result = fd.read()

# 格式化输出
formatresult(result, srclang)
fd.close()

为了更方便的使用我们把这个脚本命名位pytranslate,放到/usr/bin下,并赋予执行权限:

chmod +x /usr/bin/pytranslate

然后我们就可以使用它进行翻译了: 翻译英文到中文:

pytranslate en2zh extent
源词: extent
结果: 程度
拼音: Chéngdù
词性: 名词
其他释义:
程度
范围
幅度
规模
度
地步
广度
长度
面
长短
份儿
界
en
翻译中文到英文
pytranslate zh2en 中国
源词: 中国
结果: China
拼音: Zhōngguó
词性: 名词
其他释义:
China
zh-CN

好吧相信聪明的你肯定发现如何使用了这里就不罗嗦了.

Python 相关文章推荐
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
插入排序_Python与PHP的实现版(推荐)
May 11 Python
python使用knn实现特征向量分类
Dec 26 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
Aug 02 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
Python中顺序表原理与实现方法详解
Dec 03 Python
Python模拟FTP文件服务器的操作方法
Feb 18 Python
python装饰器三种装饰模式的简单分析
Sep 04 Python
python实现简单猜单词游戏
Dec 24 Python
Python的Bottle框架中获取制定cookie的教程
Apr 24 #Python
利用Python的装饰器解决Bottle框架中用户验证问题
Apr 24 #Python
在Python中使用mongoengine操作MongoDB教程
Apr 24 #Python
python使用arp欺骗伪造网关的方法
Apr 24 #Python
python使用wxPython打开并播放wav文件的方法
Apr 24 #Python
python使用PyGame播放Midi和Mp3文件的方法
Apr 24 #Python
python使用PyGame绘制图像并保存为图片文件的方法
Apr 24 #Python
You might like
php实现的支持断点续传的文件下载类
2014/09/23 PHP
php计算整个目录大小的方法
2015/06/01 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
JavaScript插件化开发教程(五)
2015/02/01 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
python写入中英文字符串到文件的方法
2015/05/06 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Python文件操作方法详解
2020/02/09 Python
python 利用zmail库发送邮件
2020/09/11 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
一套SQL笔试题
2016/08/14 面试题
中专三年学习的个人自我评价
2013/12/12 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
搞笑老公保证书
2015/02/26 职场文书
2015年新学期寄语
2015/02/26 职场文书
运动会200米广播稿
2015/08/19 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js