目录

  • 准备工作
  • 参考资料
  • 代码
  • 结果

原因:有很多单词要背,然后一开始一个一个查单词意思,令人智熄,于是心想批量翻译。

准备工作

  • 一台装有pythonista的iPad (当然用电脑肯定是可以的,只不过我弄的时候也是想看看iPad写python体验怎么样。)
  • 注册一个有道智云账户,创建一个自然语言翻译示例和应用,并两者进行绑定,需要利用应用ID应用密钥进行有道翻译API的调用
  • 当然还得有待翻译单词文件,一行存储一个单词

参考资料

写的时候百度了一下利用有道API的示例,找到这个博客,但是是老版本的API调用,也是可以实现翻译的,但是我修改成读取文件进行批量翻译的时候,发现到后面会报错,原因是因为有访问频率限制,好像是一个小时只允许进行1000次翻译操作,然后我就自己注册了一个有道智云的账号,官方给了调用API的资料。
API的调用主要是需要如下几个字段

  • appKey:就是在有道智云里面创建的应用的应用ID;
  • secretKey:创建的应用的应用密钥;
  • fromLang:源语言,此处是’EN’;
  • toLang:目标语言,此处是’zh-CHS’;
  • salt:随机数,利用random.randint()产生;
  • sign:签名,通过md5(appKey+q+salt+应用密钥)生成
  • q:待翻译源语言单词

组合成如下的URL形式进行API调用:
http://openapi.youdao.com/api?q=”待翻译单词“&from=EN&to=zh_CHS&appKey=”应用ID“&salt=”随机数“&sign=签名
如对单词good进行翻译,API调用URL如下(官网给的例子,应用ID、应用密钥和签名是无效的):
http://openapi.youdao.com/api?q=good&from=EN&to=zh_CHS&appKey=ff889495-4b45-46d9-8f48-946554334f2a&salt=2&sign=1995882C5064805BC30A39829B779D7B
返回的API调用结果为json格式,如下所示为翻译good的结果(官网给的例子):

{"errorCode":"0","query":"good", //查询正确时,一定存在"translation": [ //查询正确时一定存在"好"],"basic":{ // 有道词典-基本词典,查词时才有"phonetic":"gʊd""uk-phonetic":"gʊd" //英式音标"us-phonetic":"ɡʊd" //美式音标"uk-speech": "XXXX",//英式发音"us-speech": "XXXX",//美式发音"explains":["好处","好的""好"]},"web":[ // 有道词典-网络释义,该结果不一定存在{"key":"good","value":["良好","善","美好"]},{...}]],"dict":{"url":"yddict://m.youdao.com/dict?le=eng&q=good"},"webdict":{"url":"http://m.youdao.com/dict?le=eng&q=good"},"l":"EN2zh-CHS","tSpeakUrl":"XXX",//翻译后的发音地址"speakUrl": "XXX" //查询文本的发音地址
}

我的目的就是从返回的json数据中提取basic->explains的翻译结果;如果不存在,则提取translation结果;如果都不存在,则返回‘没有翻译结果’。并将源单词和翻译结果组合存储到文件中。

代码

import urllib.request
import urllib.parse
import json
import hashlib
import randomclass YoudaoFanyi():"""有道智云API"""appKey = '有道智云应用ID'secretKey = '有道智云应用密钥'fromLang = 'EN'toLang = 'zh-CHS'URL = "http://openapi.youdao.com/api?"def translate(self, text):"""翻译方法,传入要翻译的文本,返回结果字典"""# 参数salt = random.randint(1, 65536)sign = self.appKey+text+str(salt)+self.secretKeym1 = hashlib.md5()m1.update(sign.encode("utf-8"))sign = m1.hexdigest()params = {'appKey': self.appKey, 'from': self.fromLang, 'to': self.toLang, 'salt': salt, 'sign': sign ,'q': text}#params = {'keyfrom': self.KEY_FROM, 'key': self.KEY, 'type': self.TYPE, 'doctype': self.DOC_TYPE, 'version': self.VERSION ,'q': text}resp = urllib.request.urlopen(self.URL, urllib.parse.urlencode(params).encode(encoding='utf_8'))data = resp.read().decode("utf_8")
#        print('有道API翻译内容:%s'%data)return json.loads(data)def format_for_command(self, text):"""为命令行格式化翻译结果"""data = main(text)# TODO:格式化字符串if data:
#            print('有道翻译:')
#            print('\t原文本:', data.get('query', text)) explains = data.get("basic")translation = data.get('translation',None)if explains: explains = explains.get("explains")s = data.get('query', text) + ':\t' + ','.join(explains)print("explains:"+s)return selif translation:s = data.get('query', text) + ':\t' + ','.join(translation)print("trans:"+s)return selse:print('未找到该词')return 'no explanation'def main(text):if text and text.strip() != '':return YoudaoFanyi().translate(text)if __name__ == '__main__':print("------------Word translation-----------")file_in = "./word.txt"file_out = "./word_fanyi.txt"fout = open(file_out, 'w', encoding='utf-8')with open(file_in, 'r') as f:line = f.readline().strip()while line:if line:s = YoudaoFanyi().format_for_command(line)fout.write(s+"\n")line = f.readline().strip()fout.close()

结果

利用pythonista代码运行结果

在iPad上利用pythonista(python3.6)调用有道翻译API实现单词的批量翻译相关推荐

  1. 利用Bing翻译API简单的实现一个翻译工具

    常见的翻译服务提供商有Google和微软,它们的在线翻译地址如下: Bing翻译: http://www.microsofttranslator.com/?FORM=R5FD Google翻译: ht ...

  2. ipad上pythonista_[Pythonista] iPad 上很酷的 Python 開發環境 – 炎龍老師的 blog

    全功能的 Pythonista Python 是一個簡單.全功能.強大的程式語言, 使用 Python 的人很自然會希望在任何地方都可以寫 Python 程式.一開始可能覺得, 「要是在 iOS 上有 ...

  3. Java Swing 调用有道词典API实现自定义桌面翻译字典

    具体实现内容长这个样子: 下面开始具体的内容准备: 要调用有道词典的API,必须先申请API 进入网址(https://ai.youdao.com/?keyfrom=old-openapi) 先登录注 ...

  4. C#调用百度翻译API实现自己的简单翻译工具

    前几天因为频繁使用翻译功能,但是市面上的翻译软件都臃肿了,对我我这个只需要翻译的人没有什么太大用处,反而有更多弊端. 于是在百度开发者中心申请了一个百度翻译的API.自己写了一个简单的翻译功能.仅供自 ...

  5. python3怎么调用百度搜索推广API,最新能成功的方法

    最近需要用到百度竞价后台的关键词规划师,后台虽然也能查,但是只能单次查1000个,有时候有很大量词需要查的时候就感觉工作量那个巨大..所以为了以后工作方便,想做一个工具,方便使用. 查看百度营销api ...

  6. Python调用有道语音API实现文字转音频

    有道文字转语音API: https://ai.youdao.com/DOCSIRMA/html/语音合成TTS/API文档/语音合成服务/语音合成服务-API文档.html 获取应用ID和应用密钥: ...

  7. python调用谷歌翻译英文文献pdf_Python 调用 Google Translate API 批量翻译文章

    有时候批量翻译中文文章,批量变成各个小语种的语言,手动的粘贴复制是非常慢的.需要调用翻译 API 接口,综合对比市面上的各个翻译 API,个人觉得 Google 的翻译 API 最为好用和准确. 下面 ...

  8. 调用MapReduce对文件中各个单词出现的次数进行统计

    调用MapReduce对文件中各个单词出现的次数进行统计 实验配置:环境:Hadoop | 软件:Eclipse | Ubuntu系统 | ------------------------------ ...

  9. python调用百度翻译-Python 调用百度翻译API

    由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...

最新文章

  1. 阿里面试题:如何检测并避免 Java 中的死锁?
  2. Visual C++——《可视化编程技术》实验报告——资源的应用—反弹的球
  3. python商城源码_腾讯大佬用了12小时讲完的Python,整整400集,拿走不谢
  4. 文档管理系统_云脉纸质文档管理系统怎么玩?
  5. ICBU可控文本生成技术详解
  6. 2022年企业微信生态研究报告
  7. JAVA线程池ScheduledExecutorService周期性地执行任务 与单个Thread周期性执行任务的异常处理
  8. saiku 展示优化
  9. python文件操作--写入文件
  10. 内网服务器软件共享文件,服务器共享文件夹设置软件、局域网共享文件夹加密工具、文件共享服务器软件的选择...
  11. 看完这篇文章,再也不怕别人问我JVM了
  12. 时间限制的命令(timeout)
  13. php7.4 ffi,PHP 7.4 前瞻:FFI
  14. 云加数支撑商业地产转型——无止境的商业想象力测试
  15. 华为笔试题库之较难--难度
  16. C#表达式目录树系列之5 –动态创建查询表达式
  17. 六轴机器人轨迹规划之五段位置s曲线插补
  18. cufflinks之cuffmerge,cuffdiff
  19. Menu 菜单的使用
  20. 基于HI3559的ISP调试(一)

热门文章

  1. 卡兹莫机器人报价_超级机器人大战MX隐藏机体入手方法
  2. 【京东飞天茅台1499抢购】Python 脚本的完整安装、使用教程与解决方案
  3. 中国智能语音助手企业案例研究报告(2018年)-笔记
  4. [原]ubuntu下制作openstack-havana源
  5. Python使用with open() as读写文件【必知必会】
  6. 永恒的经典,8个精品MP3设计方案合集
  7. 各种java开源框架笔记
  8. 易语言做后端 实现跨域请求
  9. Android雷神游戏实训报告,实训报告1
  10. 分享2019年中国服务外包行业发展创历史新高