2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python微信公众号翻译功能怎么用_使用python一步一步搭建微信公众平台(二)----搭建

python微信公众号翻译功能怎么用_使用python一步一步搭建微信公众平台(二)----搭建

时间:2022-11-02 09:23:03

相关推荐

python微信公众号翻译功能怎么用_使用python一步一步搭建微信公众平台(二)----搭建

距离上次写使用python一步一步搭建微信公众平台(一)已经有几个月了,当中自已也搭建了一个中英文互译的小应用,可是由于英文翻中文好弄,中文翻译成英文一直有问题,知道是编码的问题,但是一直搞不定,于是就先搁浅了,今天又搞了搞,终于搞定了,在这里也说下,同时也说下json格式的应用

1. 准备,先在使用python一步一步搭建微信公众平台(一)中基本实现自动回复的功能后,接着在有道词典上申请一个key,/openapi?path=data-mode

2.根据有道的api使用说明

数据接口

/openapi.do?keyfrom=&key=&type=data&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

defyoudao(word):

qword=urllib2.quote(word)

baseurl=r'/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'infanyi.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']))

returntrans

else:

returnu'对不起,您输入的单词%s无法翻译,请检查拼写'%word

4.我们将之前得到的content进行翻译操作

Nword=youdao(content)

returnself.render.reply_text(fromUser,toUser,int(time.time()),Nword)

5.将之前的鹦鹉学舌的return删除掉,下面在微信给你的公众账号发几个词看看能不能得到翻译结果

6.兴奋了一把之后,发现只有英文可以翻译成中文,但中文却不能翻译成英文,初步推测是破编码搞的,因为这个我搁浅了一段时间,今天终于搞定了,将得到的content进行一下是否是unicode的判断,如果是unicode则对其进行utf-8转码

iftype(content).__name__=="unicode":

content=content.encode('UTF-8')

Nword=youdao(content)

returnself.render.reply_text(fromUser,toUser,int(time.time()),Nword)

关于python中的各种编码的头疼问题可以google,推荐几篇文章

7.以后继续更加好玩的功能

1月23日更新,有网友反馈,说只判断basic是否在key中,会导致很多有道本来是翻译成功了,但我的程序没有返回值,其实查看有道翻译的api,它是根据errorCode来判断是否返回成功的,如果是0则是返回正常,还有一些返回值,那么我将我的程序进行改进,选判断errorCode,然后再判断translation

defyoudao(word):

qword=urllib2.quote(word)

baseurl=r'/openapi.do?keyfrom=&key=&type=data&doctype=json&version=1.1&q='

url=baseurl+qword

resp=urllib2.urlopen(url)

fanyi=json.loads(resp.read())

iffanyi['errorCode']==0:

if'basic'infanyi.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']))

returntrans

else:

trans=u'%s:\n基本翻译:%s\n'%(fanyi['query'],''.join(fanyi['translation']))

returntrans

eliffanyi['errorCode']==20:

returnu'对不起,要翻译的文本过长'

eliffanyi['errorCode']==30:

returnu'对不起,无法进行有效的翻译'

eliffanyi['errorCode']==40:

returnu'对不起,不支持的语言类型'

else:

returnu'对不起,您输入的单词%s无法翻译,请检查拼写'%word

这样可以翻译一些不长的句子,而且还可以翻译韩语,日语等,但问题也出来了,即使输入乱七八糟的内容lkajfladfaldfladkf也会给你返回个相同的内容,内容过长的话,有道和微信的定义貌似不一样,有道可以翻译,但是微信不一定可以返回内容,另外一个问题是有引号“'”会转码'望网友大神共同讨论解决

接下来:

python微信公众号翻译功能怎么用_使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。