距离上次写使用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. 中英互译在线翻译官方版

    中英互译在线翻译 v6.2.5 官方版 软件大小:26.9MB 软件语言:简体中文 软件类别:转换翻译 软件授权:官方版 更新时间:2015-01-05 应用平台:/Win8/Win7/WinXP 中 ...

  3. 非常简单的中英互译在线翻译操作方法

    非常简单的中英互译在线翻译操作方法?无论在工作中还是生活中,我们总能遇到各种翻译问题,尤其是中英文翻译,但是很多人的英文都不好,比如小编.那么如何快捷而又专业的完成中英互译呢?如果你不知道这个问题该如 ...

  4. 产品说明书翻译,中英互译的翻译机构

    我们知道,产品说明书是用户快速了解产品性能的一个直接途径,也是帮助用户初次使用产品的指导书.在进出口贸易中,几乎所有产品涉及说明书翻译的问题.那么,如何做好产品说明书翻译,产品说明书中英互译,北京哪个 ...

  5. 使用python打造一个中英互译软件(基于有道翻译)

    (本博客简洁明了,适合小白入门) 首先明确整体构架: 1.爬虫部分 2.界面部分 3.打包 涵盖的库: import urllib.request import urllib.parse import ...

  6. 利用Python来制作一个中英互译器,并实现语音播报

    以下代码可以直接使用,唯一需要修改的就是headers部分user-agent的内容,将其更改为各位自己电脑浏览器对应的即可,如果自己不会找的文末会补充说明. 老规矩,直接给代码: from urll ...

  7. android 评论功能盖楼,微信公众号留言功能升级,评论区能“盖楼”了

    原标题:微信公众号留言功能升级,评论区能"盖楼"了 本文来自微信公众号:新榜(ID:newrankcn),作者:洁是洁白的白,原文标题:<公众号留言功能再升级!用户可互相回复 ...

  8. 新注册公众号没有留言评论功能怎么办?如何开通公众号留言功能?

    最近常常听自媒体人抱怨 "今年2月份注册了自己的微信公众号,就写写自己的小杂文啊.美妆种草啊之类的,但是一直没有留言功能.查了一下发现留言功能应该是基本自带的功能啊--为什么我的公众号没有呢 ...

  9. 微信公众号新功能-原创声明、赞赏功能、评论管理、页面模版

    原文:http://www.shichangbu.com/portal.php?mod=view&aid=25931 公众号如何申请这些功能?                          ...

最新文章

  1. QT学习之状态机框架
  2. 在eclipse中通过基于spring data的easyrest风格的maven项目操纵cassandra和lucene
  3. ZABBIX利用自带模板监控mysql数据库
  4. android studio查看字节码,使用Android studio查看Kotlin的字节码教程
  5. trouble identification check tree
  6. java 统计文本行数_统计文本文件的行数,单词书,字节数
  7. python使用elasticsearch维护数据_使用Python对ElasticSearch获取数据及操作
  8. Linux有关Shell中if用法笔记
  9. 大数据学习笔记23:MR案例——采用Combiner做词频统计
  10. 数据结构与算法笔记(二) 线性表(数组描述)
  11. 数据挖掘:原理与实践(基础篇)(进阶篇)
  12. DeepinXP_V5.8完美/增强精简版2合1
  13. android超频闪退,显卡超频后玩游戏闪退 | 手游网游页游攻略大全
  14. 机器学习——k近邻算法
  15. 如何用python做软件导出cad_使用python将cad批量导出至pdf
  16. idea如何使用subversion创建补丁包
  17. Win10任务栏全透明化(TranslucentTB)
  18. 【论文阅读】【3d目标检测】Behind the Curtain: Learning Occluded Shapes for 3D Object Detection
  19. 超六成专科生月薪低于5000元,普通本/专科生的出路在哪儿?
  20. 引流软件靠谱吗,当下引流软件那么多要怎样选择好用的软件呢?

热门文章

  1. 百度网盘隐藏空间显示服务器,百度网盘隐藏空间在哪怎么打开?百度网盘隐藏空间这样开...
  2. MySQL的自身防御机制_自我防御机制
  3. MySQL-5.7.18绿色版安装和配置
  4. 魅族手机打开usb调试后链接不上电脑,解决方法如下
  5. 图解通信原理与案例分析-6:基于离散字符的RS232串口数字通信--收发双方独立预设置同步时钟
  6. LSB图像信息隐藏(实现及分析)
  7. c语言程序与化学有关的程序,化工热力学C语言程序.doc
  8. 闭式系统蒸汽管径推荐速度_蒸汽管道的设计选型
  9. 北漂9年了,37岁的我跳槽进了国企,开启了一段新的人生旅程
  10. android短信显示内容,Android获取手机短信SMS收件箱内容