用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绘图库Matplotlib的安装
Jul 03 Python
利用Python中的输入和输出功能进行读取和写入的教程
Apr 14 Python
在Python中操作日期和时间之gmtime()方法的使用
May 22 Python
Python实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
windows下python安装pip图文教程
May 25 Python
Django csrf 两种方法设置form的实例
Feb 03 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
Python pickle模块实现对象序列化
Nov 22 Python
基于python+selenium的二次封装的实现
Jan 06 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 Python
详解python的super()的作用和原理
Oct 29 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 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
cmd下运行php脚本
2008/11/25 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
Javascript学习笔记5 类和对象
2010/01/11 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
python使用代理ip访问网站的实例
2018/05/07 Python
代码详解django中数据库设置
2019/01/28 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
StringBuilder和String的区别
2015/05/18 面试题
介绍一下linux的文件权限
2014/07/20 面试题
副总经理岗位职责范本
2014/09/30 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书