用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根据日期返回星期几的方法
Jul 06 Python
在Python中使用正则表达式的方法
Aug 13 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
windows下安装Python的XlsxWriter模块方法
May 03 Python
解决python线程卡死的问题
Feb 18 Python
python实现批量视频分帧、保存视频帧
May 31 Python
Python编写通讯录通过数据库存储实现模糊查询功能
Jul 18 Python
pytorch1.0中torch.nn.Conv2d用法详解
Jan 10 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
python查看矩阵的行列号以及维数方式
May 22 Python
Python异常处理机制结构实例解析
Jul 23 Python
如何在Python中妥善使用进度条详解
Apr 05 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
Cannot modify header information错误解决方法
2008/10/08 PHP
php中利用post传递字符串重定向的实现代码
2011/04/21 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
js几个验证函数代码
2010/03/25 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
JS面向对象编程详解
2016/03/06 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
pytorch构建网络模型的4种方法
2018/04/13 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
详解用python生成随机数的几种方法
2019/08/04 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
java关于string最常出现的面试题整理
2021/01/18 Python
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
打架检讨书100字
2014/01/19 职场文书
关于逃课的检讨书
2014/01/23 职场文书
2016年母亲节寄语
2015/12/04 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
react中的DOM操作实现
2021/06/30 Javascript