调用free api做做简易的翻译

这个是百度翻译api文档

http://api.fanyi.baidu.com/api/trans/product/apidoc

照着百度api给的文档向web服务器发送GET/POST请求,得到需要的翻译json格式,再进行解析即可。

但是貌似只能单词翻译,而且还会出现无法翻译“me”或者“he”的bug,果然百度翻译靠不住

下面上源码,一开始可以在官网上下载demo看看:

配置环境:python 3.x 即可

en_to_zh.py

 #!/usr/bin/env python3
#coding=utf8
import http.client
import hashlib
import urllib
import urllib.request
import random
import re def chinese_handle():
#连接百度翻译web服务器
httpclient = http.client.HTTPConnection('api.fanyi.baidu.com')
#要提交的请求
myurl = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
#输入要查询的单词
'''
array = []
user_input = input('please enter needed translate word:')
while user_input != '0':
array.append(user_input)
user_input = input('please enter needed translate word:')
str2 = ""
for c in array:
str2 = str2 + c +'\n';
query = str2
'''
query = input('please enter the word:')
#输入语言
fromlang = 'en'
#输出语言
tolang = 'zh'
#申请的百度appid
appid = ''
#申请的密钥
secretKey = 'osubCEzlGjzvw8qdQc41'
#随机分配一个数
salt = random.randint(32768,65536)
#拼接得到字符串
str1 = appid+query+str(salt)+secretKey
str1 = str1.encode('utf-8')
#对字符串str1进行md5加密
m = hashlib.md5()
m.update(str1)
#生成签名sign
sign = m.hexdigest()
#拼接成完整请求
myurl = myurl+'?appid='+appid+'&q='+urllib.request.quote(query)+'&from='+fromlang+'&to='+tolang+'&salt='+str(salt)+'&sign='+sign
try:
#发送请求
httpclient.request('GET',myurl)
response = httpclient.getresponse()
content = response.read()
#编码为utf-8可以解字节操作,将bytes转化为str
content = content.decode('utf-8')
#提取其中的结果
mstr = r'\\.....\\.....'
mobj = re.search(mstr,content)
#先编码为gbk再解码unicode即可显示汉字
obj = mobj.group().encode('gbk')
obj = obj.decode('unicode-escape')
print('翻译结果:',obj)
except Exception:
print('error...')
finally:
if httpclient:
httpclient.close() if __name__ == '__main__':
while 1:
chinese_handle()

下面是运行结果:

出现的bug:

百度翻译api初使用(很久没写python了,写几行玩玩)的更多相关文章

  1. 原生js简单调用百度翻译API实现的翻译工具

    先来个在线demo: js翻译工具 或者百度搜索js简单调用百度翻译API工具(不过有个小小的界面显示bug,我想细心的人应该会发现) 或者直接前往该网址:js翻译工具 或者前往我的github:gi ...

  2. 基于百度翻译API开发属于自己的翻译工具

    你是否每天使用着网页翻译工具?你是否遇到过这种情况,上网过程中遇到一个很长的单词但是又不能复制,要开两个浏览器,一个打开百度翻译,照着另一个网页输入单词?你安装了各种翻译软件后,又删除,只因忍受不了那 ...

  3. Python 调用百度翻译API

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

  4. WP8.1小梦词典开发2:百度翻译API使用

    原文出自:http://www.bcmeng.com/api2/ 小梦昨天和大家分享了WP8.1金山词霸API使用方法,今天继续分享windows phone 8.1中百度翻译API的使用方法.和昨天 ...

  5. C# 调用百度翻译Api

    这是简单的界面.用的是wpf,winform也可以 具体的操作类 public partial class MainWindow : Window { string url = "" ...

  6. 百度翻译API(C#)

    百度翻译开放平台:点击打开链接 1. 定义类用于保存解析json得到的结果 public class Translation { public string Src { get; set; } pub ...

  7. 利用百度翻译API,获取翻译结果

    利用百度翻译API,获取翻译结果 translate.py #!/usr/bin/python #-*- coding:utf-8 -*- import sys reload(sys) sys.set ...

  8. 有道翻译 / 百度翻译Api

    比较推荐使用百度翻译api 不推荐有道翻译,比较水. http://ai.youdao.com/docs/doc-trans-api.s#p02 http://ai.youdao.com/docs/d ...

  9. 百度翻译api 实现简易微信翻译小程序

    介绍 口袋翻译 口袋翻译 微信小程序 翻译功能 含7类语言的相互翻译 包含最近10条的翻译历史回溯功能 微信搜索:简e翻译 功能展示   使用百度翻译api需要申请 appid 与 key 并在 ap ...

随机推荐

  1. 怎样通过混入(Mixin)实现多继承

    js不提供现成的多重继承的方法, 但可以通过Object.assign()来手动实现: function Father1(name){ this.name = name; } function Fat ...

  2. Centos7安装gitlab11 学习笔记之备份恢复及邮箱配置

    一.备份 修改配置文件 vim /etc/gitlab/gitlab.rb 默认路径为 # gitlab_rails['backup_path'] = "/var/opt/gitlab/ba ...

  3. (一)Struts2 基础

    一.Struts简介 1.1 历史 虽然Struts 2号称是一个全新的框架,但这仅仅是相对Struts 1而言.Struts 2与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框 ...

  4. elementui更改导航栏样式

    本来是这样,有下划线有点击背景,但是业务需求不需要,就想办法进行隐藏,控制台可以观察效果找出相应的类进行格式书写 以下效果: 放上代码 <style> .el-menu-demo{ hei ...

  5. 让你在上司眼里“更靠谱”的六个建议

    "勇于创新"是职场一大谎言 晋升选择题 你有两个下属,你想从他们中挑一个升职,你觉得哪一个更适合? 员工A: 优点:奉行"80%的精力维护20%的重要客户"的原 ...

  6. gitlab自动化部署CI案例

    参考: https://blog.csdn.net/hxpjava1/article/details/78514999   (简单操作) https://blog.csdn.net/wh211212/ ...

  7. Delphi 安装apk

    procedure ToInstallApk(filename: string); var aFile: Jfile; Intent: JIntent; begin Try aFile := TJfi ...

  8. springboot系列(一) Spring Boot浅谈(转载)

    首先申明一下本文是转载自https://blog.csdn.net/fly_zhyu/article/details/76407830: 1. Spring Boot是什么,解决哪些问题 1) Spr ...

  9. java - day010 - 基本类型包装,自动装箱和拆箱,日期,集合

    基本类型的包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolea ...

  10. 前端(HTML)+后端(Django)+数据库(MySQL):用户注册及登录演示

    1.创建一个html文件用于简单的网页注册demo <!DOCTYPE html> <html lang="en"> <head> <me ...