知识点
相关文章
更多最近更新
更多使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具
2019-03-02 00:05|来源: 网路
距离上次写使用python一步一步搭建微信公众平台(一)已经有几个月了,当中自已也搭建了一个中英文互译的小应用,可是由于英文翻中文好弄,中文翻译成英文一直有问题,知道是编码的问题,但是一直搞不定,于是就先搁浅了,今天又搞了搞,终于搞定了,在这里也说下,同时也说下json格式的应用
1. 准备,先在使用python一步一步搭建微信公众平台(一)中基本实现自动回复的功能后,接着在有道词典上申请一个key,http://fanyi.youdao.com/openapi?path=data-mode
2.根据有道的api使用说明
数据接口 http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本 版本:1.1,请求方式:get,编码方式:utf-8 主要功能:中英互译,同时获得有道翻译结果和有道词典结果(可能没有) 参数说明: type - 返回结果的类型,固定为data doctype - 返回结果的数据格式,xml或json或jsonp version - 版本,当前最新版本为1.1 q - 要翻译的文本,不能超过200个字符,需要使用utf-8编码 errorCode: 0 - 正常 20 - 要翻译的文本过长 30 - 无法进行有效的翻译 40 - 不支持的语言类型 50 - 无效的key
3.知道怎么调用后后面的就简单了,加上你的要查询的词,可以是中文,也可以是英文,我建议返回格式doctype是json的,因为和xml相比使用更简单,更容易理解,关于如何使用json解析,可以看我以前写的博文,python解析json ,我们来查看一下有道翻译返回的json的基本格式
成功返回翻译结果都会有一个叫basic的key的,于是我们接下来写一个fanyi的函数,之前在头部记得import json
def youdao(word): qword = urllib2.quote(word) baseurl = r'http://fanyi.youdao.com/openapi.do?keyfrom=yourAppName&key=yourAppKey&type=data&doctype=json&version=1.1&q=' url = baseurl+qword resp = urllib2.urlopen(url) fanyi = json.loads(resp.read()) ##根据json是否返回一个叫“basic”的key来判断是否翻译成功 if 'basic' in fanyi.keys(): ##下面是你自已来组织格式 trans = u'%s:\n%s\n%s\n网络释义:\n%s'%(fanyi['query'],''.join(fanyi['translation']),''.join(fanyi['basic']['explains']),''.join(fanyi['web'][0]['value'])) return trans else: return u'对不起,您输入的单词%s无法翻译,请检查拼写'% word
4.我们将之前得到的content进行翻译操作
Nword = youdao(content) return self.render.reply_text(fromUser,toUser,int(time.time()),Nword)
5.将之前的鹦鹉学舌的return删除掉,下面在微信给你的公众账号发几个词看看能不能得到翻译结果
6.兴奋了一把之后,发现只有英文可以翻译成中文,但中文却不能翻译成英文,初步推测是破编码搞的,因为这个我搁浅了一段时间,今天终于搞定了,将得到的content进行一下是否是unicode的判断,如果是unicode则对其进行utf-8转码
if type(content).__name__ == "unicode": content = content.encode('UTF-8') Nword = youdao(content) return self.render.reply_text(fromUser,toUser,int(time.time()),Nword)
关于python中的各种编码的头疼问题可以google,推荐几篇文章
谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
7.以后继续更加好玩的功能
1月23日更新,有网友反馈,说只判断basic是否在key中,会导致很多有道本来是翻译成功了,但我的程序没有返回值,其实查看有道翻译的api,它是根据errorCode来判断是否返回成功的,如果是0则是返回正常,还有一些返回值,那么我将我的程序进行改进,选判断errorCode,然后再判断translation
def youdao(word): qword = urllib2.quote(word) baseurl =r'http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=json&version=1.1&q=' url = baseurl+qword resp = urllib2.urlopen(url) fanyi = json.loads(resp.read()) if fanyi['errorCode'] == 0: if 'basic' in fanyi.keys(): trans = u'%s:\n%s\n%s\n网络释义:\n%s'%(fanyi['query'],''.join(fanyi['translation']),' '.join(fanyi['basic']['explains']),''.join(fanyi['web'][0]['value'])) return trans else: trans =u'%s:\n基本翻译:%s\n'%(fanyi['query'],''.join(fanyi['translation'])) return trans elif fanyi['errorCode'] == 20: return u'对不起,要翻译的文本过长' elif fanyi['errorCode'] == 30: return u'对不起,无法进行有效的翻译' elif fanyi['errorCode'] == 40: return u'对不起,不支持的语言类型' else: return u'对不起,您输入的单词%s无法翻译,请检查拼写'% word
这样可以翻译一些不长的句子,而且还可以翻译韩语,日语等,但问题也出来了,即使输入乱七八糟的内容lkajfladfaldfladkf也会给你返回个相同的内容,内容过长的话,有道和微信的定义貌似不一样,有道可以翻译,但是微信不一定可以返回内容,另外一个问题是有引号“'”会转码'望网友大神共同讨论解决
接下来:
使用python一步一步搭建微信公众平台(一)----基本的验证与鹦鹉学舌功能
使用python一步一步搭建微信公众平台(三)----添加用户关注后的欢迎信息与听音乐功能
使用python一步一步搭建微信公众平台(四)----将小黄鸡引入微信自动回复
使用python一步一步搭建微信公众平台(五)----使用mysql服务来记录用户的反馈
转自:http://my.oschina.net/yangyanxing/blog/194136
相关问答
更多-
微信公众平台能使用Java开发吗[2022-09-14]
能使用的!微信 在安卓手机里可以使用,安装是用java 开发的,所以 可以用java开发 -
①官网下载spring、hibernate包
②选取用到jar
HIbernate jar(版本参考你自己的):
antlr-2.7.7.jar
classmate-0.5.4.jar
commons-collections-3.2.1.jar
dom4j-1.6.1.jar
hibernate-core-4.0.0.CR5.jar
hibernate-jpa-2.0-api-1.0.1.F ...
-
请问有没有以大型网站为实例, 一步一步教你搭建这个网站的教程?[2022-05-21]
有 www.w3chool.com.cn 从html开始,到CSS,到JS,到ASP、PHP、ASP.NET,到XML,到站点优化,到站点发布。。。。。 灰常详细,适合初学,也适合查询命令,里面有各种实例 -
二级魔方教程一步一步图解法[2022-05-24]
你好你可以看“王鹰豪二阶魔方视频”里面有详细易懂的还原讲解视频,王鹰豪是二阶魔方中国记录保持者,最强大脑第三季队长 -
幼儿简笔画恐龙,一步一步的带步骤[2023-12-07]
先画身体,壮壮的! 还有‘恐龙'腿!要画粗一点哦。 紧跟着是尾巴!长一点。 添上眼睛和鼻子! 然后就是身上很有特色的恐龙背刺啦! 最后画上一棵树!不知它吃不吃树叶! -
python爬取微信好友运动步数[2022-05-22]
微信分享的url本身就有openid,伪造Request Headers然后拿到返回的信息就行了 -
微信公众平台开发有哪些要注意的?[2022-10-26]
微信公众平台开发注意事项: 一、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入。 二、在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。 三、在开发过程中,可以使用接口调试工具来在线调试某些接口。 四、每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。 五、在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台 ... -
微信公众平台二次开发与微官网的区别[2023-08-09]
微官网其实就是属于二次开发,因为官方是没有这个功能的,是通过第三方开发来实现的,二次开发有很多,微官网只是其一,也是常见功能,就像PC时代的官网一样,现在微信时代就叫微官网,除此之外还有微餐饮、微房产、微酒店、微汽车、微物业等等多种垂直行业的开发。 -
注册微信卡在这一步 怎么办?[2022-05-14]
检查下填写的手机号是否有误,如果有误则需要重新修改,如果还是没有建议重新开机 -
下载并安装Python 2.7.1 Mac OS X 64位/ 32位x86-64 / i386安装程序(适用于Mac OS X 10.6)或Python 2.7.1 Mac OS X 32位i386 / PPC安装程序(适用于Mac OS) X 10.3至10.6) 。 在OS X上安装virtualenv和pip的说明 这是我在OS X上安装virtualenv和pip : curl -O http://peak.telecommunity.com/dist/ez_setup.py sudo pytho ...