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

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

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

数据接口

http://fanyi.youdao.com/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

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,推荐几篇文章

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=&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一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具...相关推荐

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

    距离上次写使用python一步一步搭建微信公众平台(一)已经有几个月了,当中自已也搭建了一个中英文互译的小应用,可是由于英文翻中文好弄,中文翻译成英文一直有问题,知道是编码的问题,但是一直搞不定,于是 ...

  2. 公众平台 python_轻松实现python搭建微信公众平台

    本文主要是一步一步教大家如何利用python搭建微信公众平台,有兴趣的朋友可以参考一下 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微 ...

  3. python微信公众号框架_轻松实现python搭建微信公众平台

    本文主要是一步一步教大家如何利用python搭建微信公众平台,有兴趣的朋友可以参考一下 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微 ...

  4. python开发微信订阅号如何申请_基于Python的微信公众平台二次开发(Python常用框架、订阅号开发、公众号开发)...

    1.1.课程的背景 微信公众平台的火热程度已经不用多言,无论是个人还是企业,政府还是商家,都已经开始搭建微信公众平台,微信的作用已经被各界人士认可.微信公众平台的技术需求市场缺口巨大.同时python ...

  5. 用python做公众号网页_使用python一步一步搭建微信公众平台(一)

    最近无聊,想玩玩微信的公众平台,后来发现乐趣无穷啊~ 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微信平台注册的时候需要你拍张手持身份 ...

  6. python+web.py 搭建微信公众平台(1)

    公众号平台指导网址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5 配置python开发环境就不 ...

  7. python微信搭建_python搭建微信公众平台

    python基于新浪sae开发的微信公众平台,实现功能: 输入段子---回复笑话 输入开源+文章---发送消息到开源中国 输入快递+订单号---查询快递信息 输入天气---查询南京最近五天天气状况 输 ...

  8. python开发一个web项目得需要多少行代码_用Python写个迷你出门问问|10几行代码搞定...

    这是菜鸟学Python的第71篇原创文章 上一篇讲了JSON文件的用法,小伙伴们感觉好像写的很不过瘾,后台有好几个小伙伴问我能不能再写一篇,其中还有两个小伙伴给我留言,问我什么是Web Api,好今天 ...

  9. python自动发送微信公众号_使用python一步一步搭建微信公众平台(四)----将小黄鸡引入微信自动回复...

    通过前三篇的教程,相信大家基本上了解了微信开发的基本流程,先判断用户传入数据的类型MsgType,然后再获取用户输入的内容content,再对content进行处理,再返回给用户 现在我们来加点料,在 ...

最新文章

  1. h5打开App的方法。
  2. sql-case when 条件1 then 取值1 when 条件2 then 取值2 else 取值3 end
  3. Hadoop大数据分布式文件系统hdfs的工作机制
  4. [转+个人整理]从D触发器的逻辑结构说明建立时间和保持时间
  5. ES5-5 参数默认值、递归、预编译、暗示全局变量
  6. 谁说SELINUX,IPTABLES,SAMBA不能共存?
  7. json对象的封装与解析
  8. pandas把'm8[ns]'类型转换为int类型进行运算
  9. Scratch(四):万圣节南瓜点灯
  10. 苹果保修期查询_苹果手机维修为什么这么贵?
  11. 如何定义线程数线程数
  12. c语言编程中的或逻辑的符号 符号如何输入,C语言中逻辑运算符(,||,!)和位运算符号(,|,^)...
  13. LNOI2022 退役记
  14. 潇洒郎:VMware固定虚拟机IP地址
  15. 让云助力企业数字化转型
  16. jQuery使用ajaxSubmit()提交表单示例
  17. 【转】ASP六大对象介绍
  18. lisp的vla函数画矩形_AutoLISP反应器vlr-object-reactor函数应用
  19. Chrome浏览器源代码编译安装Dark Reader插件
  20. 大搜车java_记录去大搜车的一道笔试题

热门文章

  1. 火狐浏览器滚动条兼容问题
  2. 【数学】泰勒公式推导(佩亚诺余项)
  3. Napster:生死难料,前途未卜
  4. Cocos2d-x中图字原理之深入分析
  5. 文件服务器fuse,FUSE 扩展
  6. Activity的相关知识(一)
  7. c语言程序设计实验与案例数组,新书推荐 | C语言程序设计+实验与题解
  8. 开源GIS技术讨论,欢迎加群
  9. 如何将VSCode添加到鼠标右键菜单
  10. 卡通渲染技巧(一)——漫反射部分